【问题标题】:Garbage values when array declared as unsigned char数组声明为 unsigned char 时的垃圾值
【发布时间】:2012-02-18 06:27:56
【问题描述】:

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

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

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

【问题讨论】:

  • 能否同时看到初始化代码和打印代码?
  • 您正在尝试打印不可打印的字符。

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


【解决方案1】:

因为它是一个unsigned charstd::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;
      

      【讨论】:

        猜你喜欢
        • 2023-03-16
        • 1970-01-01
        • 2018-02-12
        • 1970-01-01
        • 2021-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多