gpt4 book ai didi

c++ - 为什么我必须将一个字节转换为无符号两次才能看到十六进制输出?

转载 作者:行者123 更新时间:2023-11-30 05:34:27 24 4
gpt4 key购买 nike

<分区>

我想将变量打印为十六进制:

#include <iostream>
#include <string>
#include <cstdint>

int main() {
auto c = 0xb7;

std::cout << std::hex << static_cast<unsigned char>(c) << std::endl;
std::cout << std::hex << static_cast<unsigned>(static_cast<unsigned char>(c)) << std::endl;

std::cout << std::hex << (uint8_t)(c) << std::endl;
std::cout << std::hex << (unsigned)(uint8_t)(c) << std::endl;

return 0;
}

输出似乎是:

\ufffd (tries to print it as a char)
b7
\ufffd (tries to print it as a char)
b7

我知道 c 设置了更高的位 (10110111),但我已经将它转换为 uint8_tunsigned char 一次。

为什么我必须再次将 uint8_tunsigned char 转换为 unsigned 以获得预期的输出?

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