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