微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在go

如何解决如何在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 举报,一经查实,本站将立刻删除。