假设我的协议定义了 40 字节的消息长度(没有开销)。包含 20 个变量/信息,长度不同。
在阅读消息时,我创建了messageContent[byteNumber]
每个读取字节。
如果我想保存,比如说这 20 个284
十进制变量中的第一个,它将是
0001 0001 1100
二进制的。但那是一个半字节,并且只传输完整的字节。所以我会接受0001 0001 0000 1100
吗?
那将意味着messageContent[0] = 0001 0001
和messageContent[1] = 0000 1100
。
然后我想声明我的变量value01
:
uint32_t value01= messageContent[0] + messageContent[1]
.
我对这个主题有 5 个问题:
作为 32 位 int,它应该看起来像
0000 0000 0000 0000 0000 0001 0001 1100
,对吗?所以我的定义
value01
是错误的,因为它会以某种方式试图总结三个二进制数。如何解决这个问题?我需要告诉程序,第一个0001 0001
不是 17,而是 272(=17+255)。第二个字节将是丢失的 12,所以1100
.这些字节在内部是如何处理的?程序如何知道它是二进制的 1110 而不是十进制的 1110?
如果我用 保存
value01
在 SD 卡上cout << value01
,卡上的文件会变大多少?32 位 = 4 字节?如果我知道这 40 字节消息中的一个值不会超过 15 的值,我可以使用该类型
uint8_t
代替uint32_t
并节省卡上的空间吗?最后,经过几十年的价值观,只有一个 CSV 文件。
感谢您花时间阅读这些内容。