从协议读取中提取数据

时间:2013-11-06 16:29:50

标签: c++ character-encoding binary int

假设我的协议定义了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保存在cout << value01的SD卡上,卡上的文件会变大多少? 32位= 4字节?

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

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

0 个答案:

没有答案