c# 重写结构会导致保存混合数据

6tqwzwtp  于 2022-11-27  发布在  C#
关注(0)|答案(1)|浏览(176)

我从一个加速计获取数据,并试图将其记录到一个文件中。但是,我对得到的输出有点困惑。我只记录一个样本,以确保数据写入正确。
我创建了以下结构体来对数据进行分组:

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

以上内容总计应为10个字节。
我正在写入stdout并从传感器获取以下数据:
I(15866)加速度计:度量单位:X月25日252日Z月48日时间:
存储到SD卡的数据如下所示:
1900 FC 00300000000 A00型柴油机
将它们分开,我们得到:
地址:
这就是我开始感到困惑的地方。前3个扇区只有在我颠倒字节的顺序时才有意义,这样:
| X轴|Y型|Z轴|时间|
| - -|- -|- -|- -|
| 1900 -> 0019 = 25|1900 -> 0019 = 25| 3000 -> 0030 = 48| 00000A00 -> 000A0000 = 655.360|
首先,这可能是由于我有限的C语言知识,但像上面这样交换输出是正常的吗?
另外,我根本没有时间去理解它。看起来只有3个字节被分配给无符号整数,如果你不把它反转的话,它会给予正确的结果。

4sup72z8

4sup72z81#

正如@Someprogrammerdude在评论中指出的,这与字节序有关,而且我的结构体被填充了,导致结构体是12位而不是10位。
考虑到填充,数据现在看起来像这样:1900 FC 00 30000000 0A 000000000,已安装了一个
阅读上面的小字节序使它有意义。

相关问题