gpt4 book ai didi

c++ - char,hex,因为它显示 ffffff

转载 作者:行者123 更新时间:2023-11-30 03:55:02 27 4
gpt4 key购买 nike

我有一个 char [],名称为 buffer,数据使用二进制模式的 ifstream 保存,

void File::mostrarBuffer(){
for (int a = 0; a < std::strlen(buffer); a++){
std::cout << std::hex << ((int)buffer[a]) << std::endl;
}
// para ver char test, only for test
std::cout << "===" << std::endl;

for (int a = 0; a < std::strlen(buffer); a++){
std::cout << buffer[a] << std::endl;
}

char charTest = '\211';

std::cout << "===" << std::endl;

std::cout << std::hex << (int)charTest << std::endl;
std::cout << std::hex << (int)buffer[0] << std::endl;
}

脱壳:

ffffff89
50
4e
47
===
\211
P
N
G
===
ffffff89
ffffff89

hexdump 中的文件(“little-endian”):

0000000 5089 474e 0a0d 0a1a 0000 0d00 4849 5244

我的问题是为什么出现 ffffff89 而不是 89,并且只出现在 char [] 的第一个元素上我一直在处理这个问题,但找不到解决方案。感谢阅读。

这个解决方案对我有用:

 std::cout << std::hex << ((unsigned int)(unsigned char)buffer[a]) 
<< std::endl;

最佳答案

因为您的 char 已签名(已设置最高位)。

抱歉,我不熟悉 std::hex 的使用,但您需要以某种方式将其视为 unsigned char 值。尝试将 char 转换为 unsigned 类型。

关于c++ - char,hex,因为它显示 ffffff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29238697/

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