简体   繁体   English

在 C++ 中以十六进制格式打印 unsigned char(BYTE)。 使用 std::cout

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

I've looked through all previous version of this topic and none have seemed to help.我已经浏览了该主题的所有先前版本,但似乎没有任何帮助。 I've got a value located in unsigned char called Offset.我有一个位于 unsigned char 中的值,称为 Offset。 When printing this with printf("%02X\\n", Offset);使用printf("%02X\\n", Offset);打印时printf("%02X\\n", Offset); It prints out the correct value which is 0x2B.它打印出正确的值 0x2B。 Though when I try with std::cout << std::hex << Offset << std::endl;虽然当我尝试使用std::cout << std::hex << Offset << std::endl; It always prints a different value.它总是打印不同的值。 I have also tried:我也试过:

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

Though none have seemed to print out the correct value.尽管似乎没有人打印出正确的值。

As you defined "Offset" like this unsigned char Offset = 0x2B;正如你定义的“偏移量”这样的unsigned char Offset = 0x2B; , Offset's type now is unsigned char and you cant not print a unsigned char variable as a std::hex . , Offset 的类型现在是unsigned char并且您不能将unsigned char变量打印为std::hex You must first convert it to the std::hex type then print it.您必须先将其转换为std::hex类型,然后再打印。

#include <iostream >


int main() {

    unsigned char Offset = 0x2B;
    printf("%02X\n", 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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM