为了账号安全,请及时绑定邮箱和手机立即绑定

如何在go中将文本位串转换为网络IP地址

如何在go中将文本位串转换为网络IP地址

Go
元芳怎么了 2022-07-04 16:13:59
我可以使用以下方法将 net.IP 地址转换为位串Sprintf:fmt.Sprintf("%08b%08b%08b%08b",net.IP[0],net.IP[1],net.IP[2],net.IP[3])如何从字符串转换"11000000101010000000000000000000"回"192.168.0.0"?谢谢
查看完整描述

2 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

func binaryStringToIPv4(bs string) (uint8, 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)

}


查看完整回答
反对 回复 2022-07-04
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

首先将位串转换回整数,然后通过适当的移位取出 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[1], ipb[2], ipb[3])

fmt.Println(ip.String())


查看完整回答
反对 回复 2022-07-04
  • 2 回答
  • 0 关注
  • 299 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号