数组声明为 unsigned char 时的垃圾值
Posted
技术标签:
【中文标题】数组声明为 unsigned char 时的垃圾值【英文标题】:Garbage values when array declared as unsigned char 【发布时间】:2012-02-18 06:27:56 【问题描述】:当一个数组被声明为 unsigned char 并使用 0x00-0xff 范围内的值初始化并使用 cout 打印时,我得到如下垃圾值
+ ( �
~ � � �
� O
� � <
我可以知道如何使用单字节的数字,但能够使用 cout 吗?
【问题讨论】:
能否同时看到初始化代码和打印代码? 您正在尝试打印不可打印的字符。 【参考方案1】:因为它是一个unsigned char
,std::cout
正在将它们传递给终端并且它被显示为一个字符集(好吧,无论如何尝试 - 这些值超出了您的字符集的有效可打印字符范围'重新使用)。
使用cout
输出时转换为unsigned int
。
【讨论】:
【参考方案2】:字符类型默认显示为字符。如果您希望它们显示为整数,则必须先转换它们:
unsigned char value = 42;
std::cout << static_cast<unsigned int>(value);
【讨论】:
【参考方案3】:那些不是垃圾值。这些就是角色所代表的。要将其打印为 int,只需在输出时转换为 unsigned int
:
cout << (unsigned int) some_char;
【讨论】:
以上是关于数组声明为 unsigned char 时的垃圾值的主要内容,如果未能解决你的问题,请参考以下文章
C++怎么将 CString 转换成 unsigned char 的数组
unsigned char 到 8 个原始位的 unsigned char 数组