在 c++ 中以十六进制格式打印无符号字符(BYTE).使用 std::cout

Printing unsigned char(BYTE) in Hex format in c++. Using std::cout

本文关键字:BYTE std cout 字符 使用 无符号 c++ 十六进制 式打印 格式      更新时间:2023-10-16

我已经浏览了这个主题的所有先前版本,似乎没有一个有帮助。 我有一个位于无符号字符中的值,称为偏移量。 当打印它时,printf("%02Xn", Offset);它会打印出正确的值,即0x2B。 虽然当我尝试使用std::cout << std::hex << Offset << std::endl;它总是打印不同的值。 我也尝试过:

std::cout << std::hex << (unsigned int)Offset << std::endl;
std::cout << std::hex << static_cast<unsigned>(Offset) << std::endl;

尽管似乎没有人打印出正确的值。                   

正如您unsigned char Offset = 0x2B;这样定义"偏移量"时,偏移量的类型现在是unsigned char,您不能将unsigned char变量打印为std::hex。 您必须先将其转换为std::hex类型,然后打印出来。

#include <iostream >

int main() {
unsigned char Offset = 0x2B;
printf("%02Xn", Offset);
std::cout << std::hex << Offset << std::endl;
std::cout << std::hex << (unsigned int)Offset << std::endl;
std::cout << std::hex << static_cast<unsigned>(Offset) << std::endl;
return 0;
}