在 MODBUS 中,数据需要组织成数据报文,该报文中的数据都是大端模 式 , 即 低 地 址 存 高 位 , 高 地 址 存 低 位 。 假 设 有 一 16 位 缓 冲 区 m_RegMW[256],因为是在 x86 平台上,所以内存中的数据为小端模 式 : m_RegMW[0].low 、 m_RegMW[0].high 、 m_RegMW[1].low 、 m_RegMW[1].high…… 为了方便讨论, 假设 m_RegMW[0] = 0x3456; 在内存中为 0x56、 0x34。 现要将该数据发出,如果不进行数据转换直接发送,此时发送的 数据为 0x56,0x34。而 Modbus 是大端的,会将该数据解释为 0x5634 而非原数据 0x3456,此时就会发生灾难性的错误。所以,在此之前, 需要将小端数据转换成大端的,即进行高字节和低字节的交换,此时可 以调用步骤五中的函数 BigtoLittle16(m_RegMW[0]),之后再进行发送 才可以得到正确的数据。