C - 对结构进行 FWRITE 会导致保存混合数据



我正在从加速度计获取数据,并试图将其记录到文件中。然而,我对得到的输出有点困惑。我只记录一个示例,以确保数据写入正确。

我创建了以下结构体来分组数据:

struct AccData
{
int16_t x;
int16_t y;
int16_t z;
unsigned int time;
};

以上内容总共应该是10个字节。

我正在编写stdout并从传感器获取以下数据:

I(15866)加速度计:测量:X25Y25248 时间:10

存储在sd卡上的数据看起来像这样:

1900 fc00300000000a00

将它们分开得到:

1900 FC00 3000 00000A00

这就是我开始感到困惑的地方。前3个扇区只有在我颠倒字节的顺序时才有意义,这样:

<表类>XY Z时间tbody><<tr>1900 -> 0019 = 251900 -> 0019 = 253000 -> 0030 = 4800000A00 -> 000A0000 = 655.360

就像@Someprogrammerdude在评论中指出的那样,这与尾序和我的结构被填充的事实有关,导致结构是12位而不是10位。

考虑填充的数据现在看起来像这样:1900FC00 30000000 0A000000,

读上面的小端序是有意义的。

相关内容

最新更新