我正在使用一个使用结构来表示数组的API(并允许在访问结构时填充该数组).
如果data是struct对象,direction是uint32_t,请运行以下命令:
printf("0x%08X", data->magic);
Run Code Online (Sandbox Code Playgroud)
我得到的值:0xAAAABEEF
直接打印数组时:
printf("0x");
for (int i = 0; i < size; ++i) {
printf("%02X", payload[i]);
}
Run Code Online (Sandbox Code Playgroud)
我得到的值:0xEFBEAAAA
struct定义如下:
struct Data {
uint32_t magic;
} __attribute__((packed));
Run Code Online (Sandbox Code Playgroud)
我相信数据变量声明如下:
// Declared and initialized somewhat like this:
uint8_t payload[kMaxSize];
Data* data = reinterpret_cast<Data*>(payload);
data->magic = 0xAAAABEEF;
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么printf没有返回相同的值.是因为机器将数据存储为LSB(最低有效字节)?
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |