Вы должны учитывать тот факт, что char
может быть подписано. Если вы повысите его до int
напрямую, подписанное значение будет сохранено. Вместо этого сначала нужно преобразовать его в тип без знака той же ширины (т. Е. unsigned char
), чтобы получить желаемое значение, а , а затем преобразуют это значение в целочисленный тип, чтобы получить правильный форматированный текст.
Собирая все вместе, вы хотите что-то вроде этого:
std::cout << (int)(unsigned char)(x[0]);
Или, используя приведение в стиле C ++:
std::cout << static_cast<int>(static_cast<unsigned char>(x[0]))