当数组声明为unsigned char时的垃圾值

时间:2012-02-18 06:27:56

标签: c++ type-conversion unsigned unsigned-char

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

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

我可以知道如何使用单个字节的数字,但能够使用cout吗?

3 个答案:

答案 0 :(得分:3)

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

使用unsigned int输出时转换为cout

答案 1 :(得分:2)

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

unsigned char value = 42;
std::cout << static_cast<unsigned int>(value);

答案 2 :(得分:1)

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

cout << (unsigned int) some_char;