本文最后更新于307 天前,其中的信息可能已经过时,如有错误请发送邮件到2289035571@QQ.COM
感谢 TurboAI对本博客的的大力赞助。 创作不易,如果您觉得有帮助,请 支持LIncol29! 为了让我能够继续创作更好的内容,你也可以选择订阅博客的 VIP ,包年VIP仅需10元/年,所有VIP内容免费观看
大端字节序和小端字节序
- Big-Endian(大端):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。MODBUS协议采用大端。(和人看数字一样的顺序,先看高位)
- Little-Endian(小端):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
数据的高低字节
在十进制中靠左边的是高位字节,靠右边的是低位字节,在其他进制也是如此。
- 例如 0x12345678,从左至右阅读,高位到低位的字节依次是0x12、0x34、0x56和0x78。
内存的高低地址
- 例如 0x12345678,从左至右阅读,依次是低地址在前高地址在后。0x12、0x34、0x56、0x78
示例
数据: 0x1234 大小端传输:
在十进制中我们都说靠左边的是高位字节,靠右边的是低位字节,在其他进制也是如此。就拿 0x1234来说
为什么可以拆分成0x12 和 0x34 ,计算机中处理数据是一个字节(8位)为最小单位去处理,所以0x12构成了一个完整的字节
图例展示:
数据:0x1234
高位字节:0x12
低位字节:0x34
地址: 0x00 0x01
其中,地址 0x00 是低地址,0x01是高地址。
大端(高位字节在前): 0x12 0x34
小端(低位字节在前): 0x34 0x12
为什么要有字节序
计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。在计算机内部,小端序被广泛应用于现代 CPU 内部存储数据;而在其他场景,比如网络传输和文件存储则使用大端序。
- 计算都是从低位开始的,因此计算机内部处理采用小端序,效率较高。
- 而大端序存储的时候,由于符号位在高位,因此对于数据正负或大小的判断也就方便许多。另外,大端序也更符合人类的阅读习惯。
高8位(/256)和低8位 (%256)
因为要求的是高8位以及低8位,此处的256是 2的8八次方。
示例:
0001 1111 1111 = 511
0000 1111 1111 = 255
显而易见的,如果想得到一个数的低8位,只需要将这个数 %256 ,那么取得的余数就是该数的低八位。
相反的,将这个数 /256 ,那么得到的值就是该数的高八位。
B站视频
- B站视频 – 理解字节序-大端序和小端序:欢迎小伙伴访问B站查看视频解说
文章参考资料
- C#文章集合:更全面的C#知识点文章