首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将uint8矢量的元素转换为字符串

将uint8矢量的元素转换为字符串
EN

Stack Overflow用户
提问于 2015-08-28 07:53:01
回答 2查看 686关注 0票数 0

我很难弄清楚如何将我的uint8向量转换成字符串流。

在输入im获取uint8向量时,前9个字节是我的字符串流中不需要的标志,接下来的2个字节是我需要的一些数据,我们称之为"name1",接下来的2个字节是另一个名称,以免被称为"name2",然后出现4个字节,它们是一些uint32号(但写为4个uint8字节),让我们只称它为"number“。现在,我需要将这些数据传递给字符串流,但是:

  • name1和number2需要写成字节(字节0x52 -> char2={"5","2"})
  • 号码需要投到uint32
  • 所有变量都需要在最后的字符串中用分号分隔。

所以如果我得到像这样的向量:

--大约9个字节-大约9个字节

我需要弦流是这样的:

0500;0100;2062;

我已经想出了如何将数字转换到uint32:

代码语言:javascript
复制
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

我可以使用"<<“运算符将字符串放入字符串流,还是不建议使用?

EN

回答 2

Stack Overflow用户

发布于 2015-08-28 08:06:20

如果有字符串,只需在字符串上循环并将字符输出到字符串流中即可。

代码语言:javascript
复制
std::string name = "name1";
std::stringstream ss;
for(auto c : name)
  ss << std::static_cast<int>(c);
ss << ";";

作为附带说明:

代码语言:javascript
复制
uint32_t* var = (uint32_t*)tab;

完全没用,你不需要指针。

票数 0
EN

Stack Overflow用户

发布于 2015-08-28 08:06:16

我不确定这能解决你的问题,但我会采取不同的方法。

我会使用一个结构来描述底层协议,然后继续这样做。示例:

代码语言:javascript
复制
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);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32266003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档