大端和小端

大端(Big Endian)和小端(Little Endian)是两种不同的字节序排列方式,用于解释多字节数据在内存中的存储顺序。

在大端字节序中,高位字节(最高有效位)存储在低位地址,低位字节(最低有效位)存储在高位地址。简单来说,就是数据的高位字节先存储在内存的低地址,而低位字节后存储在内存的高地址。

而在小端字节序中,高位字节(最高有效位)存储在高位地址,低位字节(最低有效位)存储在低位地址。也就是说,数据的低位字节先存储在内存的低地址,而高位字节后存储在内存的高地址。

以一个16位整数0x1234为例,它在大端字节序中会被存储为0x12 0x34,而在小端字节序中会被存储为0x34 0x12。

Intel和Motorola填充方式

Intel 填充方式(Intel Format)也被称为小端序(Little Endian),它是指在存储多字节数据时,最低有效字节(低位字节)被存储在内存的起始地址,而最高有效字节(高位字节)则存储在内存的末尾地址。这是目前大多数个人计算机和x86架构处理器所采用的字节序。

Motorola 填充方式(Motorola Format)也被称为大端序(Big Endian),它与 Intel 方式相反。在 Motorola 方式中,最高有效字节(高位字节)被存储在内存的起始地址,而最低有效字节(低位字节)则存储在内存的末尾地址。Motorola Format 在一些嵌入式系统和网络协议中广泛使用。

这两种填充方式在数据表示上存在差异,因此在进行跨平台数据传输、网络通信或文件交换时,需要进行相应的字节序转换,以确保数据的正确解析和传递。

Modbus-RTU 协议

Modbus-RTU 协议使用的是大端模式(Big Endian)。在 Modbus-RTU 中,多字节数据的传输是以大端方式进行的,即高位字节先传输,低位字节后传输。

例如,一个16位整数值0x1234,在 Modbus-RTU 协议中会按照大端模式将其分为高位字节和低位字节,然后按照高位字节在前、低位字节在后的顺序进行传输。因此,传输时会先发送 0x12,再发送 0x34。

口诀:

高字节在前,大端,Motorola
高字节在后,小端,intel

08-11 08:22