Modbus通信的大端和小端字节序
什么是字节序?
当一个数据(比如一个32位的整数 0x12345678)需要存储在内存中时,内存是以字节为单位进行寻址的。这个32位的数据占用了4个字节(0x12, 0x34, 0x56, 0x78)。字节序决定了这些字节是按照什么顺序存入内存的。主要有两种字节序,大端序、小端序。
1、大端序
大端序的核心思想是:高位字节存储在低地址处。
示例:将 0x12345678 存入地址 0x1000 开始的内存
地址0x1000存入0x12, 最高位字节,存放在最低地址
地址0x1001存入0x34
地址0x1002 存入0x56
地址0x1003存入0x78 最低位字节,存放在最高地址
一般网络协议(如TCP/IP)称为大端序
2、小端序
小端序的核心思想是:低位字节存储在低地址处。
示例:将 0x12345678 存入地址 0x1000 开始的内存
地址0x1000 存入0x78 最低位字节,存放在最低地址
地址0x1001存入0x56
地址0x1002 存入0x34
地址0x1003存入0x12 最高位字节,存放在最高地址
Intel 处理器的架构采用的x86、x64采用小端存储,我们的windows电脑一般都是小端存储。
案例
下面的C#代码调用BitConverter.IsLittleEndian来判断当前系统是不是小端存储,可以看出输出结果是true,说明是小端存储,然后我们使用值65534来验证,这个值占据