我很难弄清楚如何将我的uint8向量转换成字符串流。
在输入im获取uint8向量时,前9个字节是我的字符串流中不需要的标志,接下来的2个字节是我需要的一些数据,我们称之为"name1",接下来的2个字节是另一个名称,以免被称为"name2",然后出现4个字节,它们是一些uint32号(但写为4个uint8字节),让我们只称它为"number“。现在,我需要将这些数据传递给字符串流,但是:
所以如果我得到像这样的向量:
--大约9个字节-大约9个字节
我需要弦流是这样的:
0500;0100;2062;
我已经想出了如何将数字转换到uint32:
uint8_t tab[4];
for(int i=4; i!=0; --i)
{
tab[4-i]=data[i+14];
}
uint32_t* var = (uint32_t*)tab;有什么更好的方法吗?
编辑:
如何将uint8值作为字符传递给字符串?
示例:
字节输出: 0x05
字符串输出: 05
我可以使用"<<“运算符将字符串放入字符串流,还是不建议使用?
发布于 2015-08-28 08:06:20
如果有字符串,只需在字符串上循环并将字符输出到字符串流中即可。
std::string name = "name1";
std::stringstream ss;
for(auto c : name)
ss << std::static_cast<int>(c);
ss << ";";作为附带说明:
uint32_t* var = (uint32_t*)tab;完全没用,你不需要指针。
发布于 2015-08-28 08:06:16
我不确定这能解决你的问题,但我会采取不同的方法。
我会使用一个结构来描述底层协议,然后继续这样做。示例:
struct dx{
uint8 _junk0[9];
char name1[2];
char name2[2];
uint32 num;
} __attribute__((packed));
uint8 *input;
dx* struct=(dx*)input;
printf("%d",dx->num);https://stackoverflow.com/questions/32266003
复制相似问题