大端序和小端序

目录

大端和小端

示例

Big-Endian(大端): 低地址

buf[0] (0x01) -- 高位字节

buf[1] (0x02)

buf[2] (0x03)

buf[3] (0x04) -- 低位字节

Little-Endian(小端): 低地址

buf[0] (0x04) -- 低位字节

buf[1] (0x03)

buf[2] (0x02)

buf[3] (0x01) -- 高位字节

存在的意义

网络的存储序


大端和小端

大端和小端是用来描述在计算机中多字节数据存储时的两种不同方式。

在大端存储方式中,数据的高位字节(最高有效字节)存储在内存的低地址处,而低位字节(最低有效字节)存储在内存的高地址处。换句话说,在一个多字节数据中,最高有效字节的地址是最小的,最低有效字节的地址是最大的。

而在小端存储方式中,情况正好相反,数据的低位字节存储在内存的低地址处,而高位字节存储在内存的高地址处。

示例

当unsigned int value = 0x01020304时,我们可以使用unsigned char buf[4]来表示value。在两种不同的字节序下,其存储情况如下:

Big-Endian(大端): 低地址

buf[0] (0x01) -- 高位字节
buf[1] (0x02)
buf[2] (0x03)
buf[3] (0x04) -- 低位字节

高地址

Little-Endian(小端): 低地址

buf[0] (0x04) -- 低位字节
buf[1] (0x03)
buf[2] (0x02)
buf[3] (0x01) -- 高位字节

存在的意义

在实际的计算机体系结构中,不同的处理器可能采用不同的存储方式,因此在处理跨平台数据交换时,需要考虑到大端小端的影响。

网络的存储序

在网络中,通常使用的是大端序(big-endian)。这是因为大部分网络协议(如TCP/IP)规定了数据在网络传输时要使用大端序来编码。这样做的好处是,不同架构的计算机在进行数据交换时能够更容易地进行解释和处理,因为它们都采用了相同的字节序。

因此,网络中的数据通常以大端序的形式进行传输,不管发送端和接收端的计算机是采用大端序还是小端序,在进行网络传输时都要按照大端序的格式来处理数据。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值