std :: cout дает другой вывод из qDebug

Я использую Qt, и у меня есть unsigned char *bytePointer и хотите распечатать числовое значение текущего байта. Ниже приведен мой код, который предназначен для предоставления значения int и шестнадцатеричного значения непрерывных байтов, которые я получаю от компьютера, подключенного к компьютеру:

int byteHex=0;
byteHex = (int)*bytePointer;

qDebug << "\n  int: " //this is the main issue here.
<< *bytePointer;

std::cout << " (hex:  "<< std::hex
<< byteHex
<< ")\n";

}

Это дает отличные результаты, и я получаю реальные цифры, однако этот код входит в API, и я не хочу использовать функции только для Qt, такие как qDebug. Итак, когда я пытаюсь это:

int byteHex=0;
byteHex = (int)*bytePointer;

std::cout << "\n  int: " //I changed qDebug to std::cout
<< *bytePointer;

std::cout << " (hex:  "<< std::hex
<< byteHex
<< ")\n";

}

Вывод действительно дает шестнадцатеричные значения отлично, однако int-значения возвращают символы (например, ☺, └, §, чтобы перечислить несколько).

Мой вопрос: как я могу получить std::cout дать тот же результат, что и qDebug?

РЕДАКТИРОВАТЬ: по какой-то причине символы появляются только с определенной настройкой Qt. Я понятия не имею, почему это произошло, но это исправлено сейчас.

2

Решение

Как отмечали другие в комментарии, вы меняете вывод на hex, но на самом деле не устанавливаете его здесь:

std::cout << " (hex:  "<< std::hex
<< byteHex
<< ")\n";

Вам нужно будет применить это впоследствии:

std::cout << std::dec;
2

Другие решения

Стандартные выходные потоки будут выводить любой тип символа как символ, а не числовое значение. Чтобы вывести числовое значение, преобразуйте в целочисленный тип без символов:

std::cout << int(*bytePointer);
1

По вопросам рекламы [email protected]