首先,我有一个char array
存储数据
unsigned char dat[3];
memset(dat, 0, sizeof(dat));
memcpy(dat, &no, 2);
当我检查dat时,它包含一个0xfd 0x01的十六进制 因为no的值为509,十六进制应为0x01 0xfd
我想知道我是否应该关注十六进制的顺序, 我应该更改订单。非常感谢
答案 0 :(得分:2)
您的系统是小端的。它与硬件有关,在小端字节序平台上,第一个字节作为多字节值的一部分时,是最低有效位。查找:https://en.wikipedia.org/wiki/Endianness
本质上,如果CPU是低端字节序,则值0x12345689
将表示为以0x89开头的字节集。在大字节序上它的顺序相反,而在混合字节序上,它可能在运行时发生变化。
答案 1 :(得分:1)
问题实际上是您接下来要做什么?在您当前的硬件(Little Endian)上,这是系统如何对数字字节进行排序的方式。最低有效字节在前:0xfd 0x01。
如果出于任何原因您确实希望交换此字节顺序,请签出:How do I convert between big-endian and little-endian values in C++?