【发布时间】:2020-11-20 21:51:56
【问题描述】:
我找不到有类似问题的人,所以我决定创建一个新问题。
我目前正在尝试从字符串流中提取 1 字节大小的十六进制值,我计划将提取的值存储在 unsigned char 中,问题是,字符串流将从流中提取单个字符并将其存储在我的变量。我想这是可以理解的,因为我成功地使用了一个短整数来提取我的值,并且它完美地工作。现在我知道了我的问题,我想我可以简单地将变量转换为数值,同时将其保留为无符号字符,但显然我不可能将其转换为提取运算符的正确操作数:
注意:byte 是 unsigned char 的 typedef,而不是 std::byte。
以下是一些尝试:
我可以使用 short 而不是 char,但我想知道是否有办法解决这个问题,使用成员运算符>>() 对我也不起作用!
编辑:这就是我的 stringstream 字符串的样子:“11 A7 D9 13 6D 9D ED DA FD F4 F1”。我想将十六进制的 11(十进制的 17)提取到我的 byteBuffer 变量中。
【问题讨论】:
-
重载不是针对
short,而是针对short &,因为当您从输入中读取时,您想写入变量。 -
对不起,我没说清楚,我的意思是我的值范围从 0x00 到 0xFF,值可以存储在单个 8 位字节中。
-
我认为没有任何方法可以直接使用字节变量来做到这一点。只需读入一个short,然后将short分配给字节。
-
不要放代码/文字的图片。将其作为格式化文本包含在问题中。
-
只要读入任意非字符整数类型,然后提取完成后,将值转换后放到你想要的地方。
标签: c++ visual-studio visual-c++ stringstream