登录
首页 >  Golang >  Go问答

IPv4地址的字节顺序与BigEndian顺序相同

来源:stackoverflow

时间:2024-03-11 16:09:24 115浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《IPv4地址的字节顺序与BigEndian顺序相同》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我对标准库中的 go 二进制包如何使用 bigendian 排序将整数表示为 []byte 感到有点困惑。

作为参考,下面是我困惑的标准库中的方法:

func (bigEndian) PutUint32(b []byte, v uint32) {
    _ = b[3] // early bounds check to guarantee safety of writes below
    b[0] = byte(v >> 24)
    b[1] = byte(v >> 16)
    b[2] = byte(v >> 8)
    b[3] = byte(v)
}

假设我有一个 ipv4 地址,表示为无符号 32 位整数,例如 236194314

使用 bigendian 排序,这应表示为 4 字节切片:[10 10 20 14]

但是,putuint32 将数组中最高有效字节存储在最后一个索引 b[3] = byte(v) 中,结果为 [14 20 10 10]

有没有具体的解释?


解决方案


数字 236194314 的十六进制表示为 0E 14 0A 0A。所以最高有效字节确实是 14d。您的 IPv4 地址表示为无符号 32 位整数,其字节已反转。

问题发生在转换为字节切片之前。

今天关于《IPv4地址的字节顺序与BigEndian顺序相同》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>