我发现自己最近摆弄了Modbus over IP,其中数据被存储并传输到16位寄存器中。 要编码大于16位的数据类型(例如32位浮点数),通常的方法是将32位值分成两个连续的16位寄存器(一对)。该标准的一些实现者选择将最重要的16位放在该对的第一个地址中,而其他一些则选择将其置于第二位。 这两种方法有时分别称为Big Endian和Little Endian。什么是endianess的正确定义?
起初我对这个措辞有点误导,因为CS教科书通常指出,字节顺序与字节顺序有关。这也体现在某些库函数处理字节顺序的方式上:例如Python的struct.unpack库通过交换字节顺序来解开小端和大端值。
然而,对于这种特定的应用(即Modbus),字节顺序确实是指连续的16位寄存器(也称为字顺序)的顺序。
那么,endianess的正确定义是什么? 它是否严格适用于字节顺序或任何其他大小的值被分割的块?
感谢, 再见, 马尔科
字节,单词?不,“endianness”是关于煮鸡蛋开裂的起点。顺便说一句,维基说:“有些旧的ARM处理器具有一半的小端,一半的大端浮点数表示,用于双精度数字:这两个32位字都存储在小端,如整数寄存器,但最重要的第一个。“ –