【问题标题】:Printing unsigned char(BYTE) in Hex format in c++. Using std::cout在 c++ 中以十六进制格式打印 unsigned char(BYTE)。使用 std::cout
【发布时间】:2020-05-01 21:09:26
【问题描述】:

我浏览了该主题的所有先前版本,但似乎没有任何帮助。 我有一个位于 unsigned char 中的值,称为 Offset。 当使用printf("%02X\n", 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;

虽然似乎没有人打印出正确的值。

【问题讨论】:

  • It should work。错误在其他地方。
  • @Evg 你说得对,谢谢。我什至没有意识到不存在错误。

标签: c++ char hex cout unsigned


【解决方案1】:

当您像 unsigned char Offset = 0x2B; 这样定义“偏移”时,偏移的类型现在是 unsigned char,您不能不将 unsigned char 变量打印为 std::hex。 您必须先将其转换为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;
}

【讨论】:

  • OP 已经转换为无符号,并且还意识到错误在其他地方
猜你喜欢
  • 2012-01-11
  • 2010-10-14
  • 1970-01-01
  • 2013-10-17
  • 2014-02-20
  • 2012-09-02
  • 2012-09-11
  • 2013-03-31
相关资源
最近更新 更多