假设我的协议定义了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
保存在cout << value01
的SD卡上,卡上的文件会变大多少? 32位= 4字节?
如果我知道这40个字节消息中的一个值不会超过15的值,我可以使用类型uint8_t
代替uint32_t
并节省卡上的空间?在经过数十年的价值观之后,最终只有一个CSV文件。
感谢您花时间阅读这些内容。