对于我正在从事的项目,我使用魔数(Magic Number)。 这个宏用来定义一个
#define BOOTSIGNATURE 0xAA55
但是,当我对生成的文件进行 HEXDUMP 时,它应该显示 AA55,但它显示的是 55 AA。
GCC 是否混淆了字节顺序,还是我混淆了?该项目适用于 x86 处理器。 AA 55 需要按照该特定顺序。我可以只交换字节,但我很好奇为什么 GCC 会这样做。
最佳答案
0xAA55
是一个 int
,因此您受机器的字节顺序的影响。我会将其存储为字符数组:
const unsigned char BOOTSIGNATURE[] = {0xAA, 0x55};
关于c - GCC#define 语句字节顺序错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13315616/