Значения мусора, когда массив объявлен как unsigned char - PullRequest
0 голосов
/ 18 февраля 2012

Когда массив объявляется как unsigned char и инициализируется значениями в диапазоне 0x00-0xff и печатается с использованием cout, я получаю значения мусора следующим образом

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

Могу ли я узнать, как использовать однобайтовый номер для чисел, и при этом использовать cout?

Ответы [ 3 ]

3 голосов
/ 18 февраля 2012

Поскольку это unsigned char, std::cout передает их на терминал и отображается как набор символов (ну, в любом случае, попытка - значения выходят за пределы допустимых печатаемых символов для набора символов, который вы ''повторно использовать).

Приведение с unsigned int при выводе с cout.

2 голосов
/ 18 февраля 2012

Типы символов по умолчанию отображаются в виде символов. Если вы хотите, чтобы они отображались в виде целых чисел, вам придется сначала преобразовать их:

unsigned char value = 42;
std::cout << static_cast<unsigned int>(value);
1 голос
/ 18 февраля 2012

Это не мусорные значения.Это то, что символ представляет.Чтобы напечатать его как int, просто приведите к unsigned int во время вывода:

cout << (unsigned int) some_char;
...