Go IPv4地址双字节顺序

Go IPv4地址双字节顺序,go,Go,我对标准库中的Go二进制软件包如何用BigEndian排序将整数表示为[]字节感到有点困惑 以下是标准库中的方法,供参考: 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)

我对标准库中的Go二进制软件包如何用BigEndian排序将整数表示为
[]字节感到有点困惑

以下是标准库中的方法,供参考:

    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]=字节(v)
中,结果是
[14 20 10]


对此有什么具体的解释吗?

数字236194314是十六进制的0E14 0A 0A。所以最重要的字节实际上是14d。表示为无符号32位整数的IPv4地址已被字节反转

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

b[3]=字节(v)
(10)是最低有效字节。