如何解决如何在go
我可以使用Sprintf
将net.IP地址转换为位串:
fmt.Sprintf("%08b%08b%08b%08b",net.IP[0],net.IP[1],net.IP[2],net.IP[3])
如何将字符串"11000000101010000000000000000000"
转换回"192.168.0.0"
?
谢谢
解决方法
首先将位串转换回整数,然后通过适当的移位来取出IP地址的一部分。
s := "11000000101010000000000000000000"
output,_ := strconv.ParseInt(s,2,64)
ipb := []byte{
byte(output >> 24),byte(output >> 16),byte(output >> 8),byte(output),}
ip := fmt.Sprintf("%d.%d.%d.%d",ipb[0],ipb[1],ipb[2],ipb[3])
fmt.Println(ip)
或
ip := net.IPv4(ipb[0],ipb[3])
fmt.Println(ip.String())
,
func binaryStringToIPv4(bs string) (uint8,uint8,uint8) {
var ip uint32
for i,c := range bs {
// 31 = len(bs)-1
ip |= uint32(byte(c)-'0') << (31 - i)
}
return uint8(ip >> 24),uint8(ip >> 16),uint8(ip >> 8),uint8(ip)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。