2
我正在使用使用结构来表示数组(并允许在访问结构时填充该数组)的API。以十六进制打印数组与整数
如果数据是一个结构对象,并且方向是uint32_t的,运行以下:
printf("0x%08X", data->magic);
我得到的值:0xAAAABEEF
在打印阵列直接作为例如:
printf("0x");
for (int i = 0; i < size; ++i) {
printf("%02X", payload[i]);
}
我得到的值:0xEFBEAAAA
结构定义如下所示:
struct Data {
uint32_t magic;
} __attribute__((packed));
我相信数据变量声明是这样的:
// Declared and initialized somewhat like this:
uint8_t payload[kMaxSize];
Data* data = reinterpret_cast<Data*>(payload);
data->magic = 0xAAAABEEF;
我很好奇,为什么printf的不返回相同的值。是否因为机器将数据存储为LSB(最低有效字节)?
非常感谢!如果这是一个微不足道的问题,表示歉意;我对我的理解深感怀疑 - 谢谢你的明确解释。 – Jary