辨析字节序(Endianness)

Posted asvblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了辨析字节序(Endianness)相关的知识,希望对你有一定的参考价值。

字节序(Endianness, Byte Order)指的是对于一个多字节数值,当在内存中存储该值或者在链路中传输该值时,其值所包含的多个字节的排列顺序。

在计算机科学中,一般存在两种字节序,大端字节序(Big Endian)和小端字节序(Little Endian)。大端字节序指存储时数值最高位在前,即最高位存储在内存的低地址,也就是从左到右的顺序。小端字节序指存储时数值的最低位在前,也就是最高位存储在内存的高地址,即从右到左的顺序。

例如:IP 地址(IPv4,无符号32位整形数值) 10.4.16.0 的大端字节序表示为:0x0a041000,小端字节序表示为 0x0010040a. Intel x86 的处理器使用小端字节序,因此,如果使用 pcap 库读取网卡配置信息时,如果 10.4.16.0 为网络号,那么读到的数值为 0x0010040a.

在网络中,一般使用大端字节序。例如 IPv4, IPv6, TCPUDP 这些协议,都是使用大端字节序。因此,大端字节序也被称为网络字节序。

以上是关于辨析字节序(Endianness)的主要内容,如果未能解决你的问题,请参考以下文章

字节序

网络字节序

网络字节序

网络字节序的转换函数

大端字节序和小端字节序

c++接收数据的时候,需要把网络字节序转成主机字节序吗