0

当一个数组被声明为 unsigned char 并使用 0x00-0xff 范围内的值初始化并使用 cout 打印时,我得到如下垃圾值

+   (   �           
~   �   �   �   
    �       O   
    �   �   <   

我可以知道如何使用单字节作为数字并且能够使用 cout 吗?

4

3 回答 3

3

因为它是unsigned char,std::cout将它们传递给终端并且它被显示为一个字符集(好吧,无论如何尝试 - 这些值超出了您正在使用的字符集的有效可打印字符范围)。

unsigned int使用 输出时投射到cout

于 2012-02-18T06:30:32.567 回答
2

Char 类型默认显示为字符。如果您希望它们显示为整数,则必须先转换它们:

unsigned char value = 42;
std::cout << static_cast<unsigned int>(value);
于 2012-02-18T06:33:14.270 回答
1

这些不是垃圾值。这些就是角色所代表的。要将其打印为 int,只需unsigned int在输出时强制转换为:

cout << (unsigned int) some_char;
于 2012-02-18T06:30:29.717 回答