Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Golang IPv4 字符串与整数互转

Golang IPv4 字符串与整数互转方式

作者:风神韵

这篇文章主要介绍了Golang IPv4 字符串与整数互转方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1. 字符串转整数

第一步:

第二步:

func InetAddr(ipaddr string) uint32 {
	var ret uint32
 
	ip := net.ParseIP(ipaddr)
	if ip == nil {
		return 0
	}
 
	if err := binary.Read(bytes.NewBuffer(ip.To4()), binary.BigEndian, &ret); err != nil {
		return 0
	}
 
	return ret
}

2. 整数转字符串

整数转字符串比较简单,

以一个例子来演示:

有 IPv4 地址十六进制整数表示形式为 0x01020304,将其分别移位24、16、8、0后,

会得到 IP 地址字符串表示形式的 4 段:

byte(0x01020304 >> 24) = byte(0x01)           = 1

byte(0x01020304 >> 16) = byte(0x0102)       = 2

byte(0x01020304 >> 8) = byte(0x010203)     = 3

byte(0x01020304 >> 0) = byte(0x01020304) = 4

将这四个值用 . 拼接后,即可得到字符串表式:1.2.3.4

func IPv4Uint32ToString(ip uint32) string {
    return fmt.Sprintf("%d.%d.%d.%d", byte(ip>>24), byte(ip>>16), byte(ip>>8), byte(ip))
}

注意:

byte 在强制转换大于其存储最大值时(0xff)时会溢出,会将左边部分丢弃。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文