gpt4 book ai didi

C++ std::cout 十六进制

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:35 36 4
gpt4 key购买 nike

我在 C++ 中有一个带有 printf 的输出语句,如下所示:

for(int i=0; i<6; i++)
printf("%.2X", (unsigned char) iter->hwaddress[i]);

我需要用 std::cout 做输出,我试过这样做:

for(int i=0; i<6; i++)
cout << hex << (unsigned char) iter->hwaddress[i];

但这只是给了我:

  �:�:w:�:�:

有人知道怎么做吗?

最佳答案

你需要把它转换成一个 `int:

char c = 15;
cout << hex << setfill('0') << setw(2) << static_cast<int>(c); // prints "0f"

hex 仅影响整数 I/O,char 不被视为其中的一部分 - 因此您的代码最终仍会输出实际的 chars。

请注意,如果 char 已签名并且您需要它处理大于 0x7f 的值,您必须先将其转换为 unsigned char 然后到 unsigned int:

cout << hex << setfill('0') << setw(2)
<< static_cast<unsigned int>(static_cast<unsigned char>(c));

关于C++ std::cout 十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28257957/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com