当一个数组声明为unsigned char并使用0x00-0xff范围内的值初始化并使用cout打印时,我得到垃圾值如下
+ ( �
~ � � �
� O
� � <
我可以知道如何使用单个字节的数字,但能够使用cout吗?
答案 0 :(得分:3)
因为它是一个unsigned char
,std::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;