gpt4 book ai didi

c++ - char 数组未正确初始化

转载 作者:行者123 更新时间:2023-11-30 02:26:52 29 4
gpt4 key购买 nike

我有一个用于字节码的字符数组。将它们一一打印出来应该会产生与您在此处看到的相同的十六进制值:

char toWrite[] = {'\x50','\x48','\xB8','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\x00','\xFF','\xE0' };

但是,当我尝试循环打印这些值时,它们被破坏了。我看到的是:

50 48 ffffffb8 00 00 00 00 00 00 00 ffffffff ffffffe0

为什么这些字符打印错了?我在 foreach 循环中迭代,每个元素都传递给

cout << hex << (int)currentChar << endl;

最佳答案

对于大多数系统,char 是 8 位宽,是有符号整数类型。存储 \xB8 将使其最高有效位为 1,这将使它为负。并将其转换为 int 也会导致负值,如果 int 为 32 位宽,则会导致 0xffffffb8

你应该使用unsigned char:

unsigned char toWrite[] = {/*...*/};

此外,static_cast 比 C 风格的转换更可取:

cout << hex << static_cast<int>(currentChar) << endl;

关于c++ - char 数组未正确初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42335022/

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