理解字节序

1、什么是字节序
举个例子: uint32_t value = 0x44332211;
           buf[4] = {0};
           memcpy(buf,&value,sizeof(uint32));
那么 ,buf中的值是什么?

在小端序列的主机中,buf[0] = 0x11,  buf[1] = 0x22, buf[2] = 0x33, buf[3] = 0x44
小端序列比较符合思维,地位放在低地址,高位放在高地址

在大端序列的主机中,buf[0] = 0x44,buf[1] = 0x33, buf[2] = 0x22, buf[3] = 0x11
大端序列 比较符合直观,人类一般是高位先写(低地址),地位后写(高地址)。

2、为什么会有两种字节序?
可能有些人主张思维优先(小端序列)、有人主张直观优先(大端序列),就好比争论鸡蛋应该是从小端敲还是大端敲。
还有一种解释是,计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。 但是,人类还是习惯读写大端字节序。所以,除了计算机的内部处理,其他的场合几乎都是大端字节序,比如网络传输和文件储存。
一般PC主机都是小端序,所以小端序也称为主机序; 大端序也称为网络序

3、什么时候需要注意字节序
传输字节流的时候需要注意字节序。因为不同主机的字节序有可能不一样,需要在传输的时候约定好。
传输的一方,都要把数值字节流从本机序转换成网络序
接收的一方,都要把数值字节流从网络序转换成本机序

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值