从char获取字节值

时间:2011-01-16 15:45:20

标签: c++ char byte

这很简单,但我遇到了这个问题。 http://www.ipix.lt/images/90928843.png 我想要缓冲[5]。但不是符号值,而是255.尝试将类型转换为int或byte,但得到-1。

3 个答案:

答案 0 :(得分:4)

正确的是,将它转换为int,你得到-1,因为你的实现中的char是一个有符号的类型(如果char是有符号或无符号的,它实际上是实现定义的,通常你可以在编译器选项中更改它);您在调试器窗口中看到的是它的无符号表示。

要获得无符号值,首先应将其转换为unsigned char,然后转换为unsigned int(我认为您也可以将其转换为unsigned int,但我是不确定)。

--- --- EDIT

实际上在调试器窗口中我看到它的类型为unsigned char,所以我的答案的第一部分可能不适用......你应该告诉我们如何定义缓冲区。

答案 1 :(得分:1)

byte如何定义? C ++不知道这种类型。

但是你可以转换为int

static_cast<int>(msg.buffer[i + 2]) …

注意使用static_cast而不是弃用的C风格的强制转换。始终使用前者,而不是后者。有关原因的说明,请参阅C++ cast syntax style上的问题。

(除此之外,Matteo是正确的,你需要先转换为无符号值。)

答案 2 :(得分:0)

使用stringstream(http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/)将是一个可行的解决方案,将字节(我想象的只是一个无符号字符)转换为存储为字符串的整数。