理解字节序

前端之家收集整理的这篇文章主要介绍了理解字节序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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、什么时候需要注意字节序
传输字节流的时候需要注意字节序。因为不同主机的字节序有可能不一样,需要在传输的时候约定好。
传输的一方,都要把数值字节流从本机序转换成网络序
接收的一方,都要把数值字节流从网络序转换成本机序
原文链接:/bash/390798.html

猜你在找的Bash相关文章