0

假设我的协议定义了 40 字节的消息长度(没有开销)。包含 20 个变量/信息,长度不同。

在阅读消息时,我创建了messageContent[byteNumber]每个读取字节。

如果我想保存,比如说这 20 个284十进制变量中的第一个,它将是 0001 0001 1100二进制的。但那是一个半字节,并且只传输完整的字节。所以我会接受0001 0001 0000 1100吗?

那将意味着messageContent[0] = 0001 0001messageContent[1] = 0000 1100

然后我想声明我的变量value01

uint32_t value01= messageContent[0] + messageContent[1].

我对这个主题有 5 个问题:

  1. 作为 32 位 int,它应该看起来像0000 0000 0000 0000 0000 0001 0001 1100,对吗?

  2. 所以我的定义value01是错误的,因为它会以某种方式试图总结三个二进制数。如何解决这个问题?我需要告诉程序,第一个0001 0001不是 17,而是 272(=17+255)。第二个字节将是丢失的 12,所以1100.

  3. 这些字节在内部是如何处理的?程序如何知道它是二进制的 1110 而不是十进制的 1110?

  4. 如果我用 保存value01在 SD 卡上cout << value01,卡上的文件会变大多少?32 位 = 4 字节?

  5. 如果我知道这 40 字节消息中的一个值不会超过 15 的值,我可以使用该类型uint8_t代替uint32_t并节省卡上的空间吗?最后,经过几十年的价值观,只有一个 CSV 文件。

感谢您花时间阅读这些内容。

4

0 回答 0