gpt4 book ai didi

c - 为什么 '\xff' 没有被识别?

转载 作者:行者123 更新时间:2023-12-02 06:17:24 27 4
gpt4 key购买 nike

我知道 0xff 可以根据变量类型有不同的表示。就像 -1 表示有符号(字符/整数(?))和 255 表示无符号字符。

但我使用的是与实现无关的 uint8_t 类型,并且我已确保 0xff 实际上位于我正在迭代的结构中。这是代码:

struct pkt {
uint8_t msg[8];
};

void main(int argc, char **argv) {
...

struct pkt packet;
memset(&packet, 0, sizeof packet);
strcpy(packet.msg, "hello");
packet.msg[strlen("hello")] = '\xff';

crypt(&packet, argv[1]);

...
}

void crypt(struct pkt *packet, unsigned char *key) {
int size = msglen(packet->msg);

...
}

int msglen(uint8_t *msg) {
int i = 0;
while(*(msg++) != '\xff') {
i++;
}
return i;
}

我查看了结构,packet.msg[5] 确实设置为 0xff。但是 while 循环进入无限循环,就像它从未发现 0xff 一样。

诸如 0x7f 之类的值有效。我没有尝试过 0x80,但我怀疑如果 0xff 不起作用,它可能无法工作。它可能与符号有关,但我看不出问题应该来自哪里。

谢谢。

编辑:对我来说,使用 0x7f 还是 0xff 并不重要。但我只想知道是什么阻止我检测到 0xff。

最佳答案

如果你有一个无符号的,你不能使用字 rune 字。

'\xff' 是 -1,而不是 255,因为 a 字 rune 字是有符号的。

while 条件始终为真。如果你是无符号的,你应该只使用数字:0 到 255,或者将你知道的字符转换为 <128 到无符号。

关于c - 为什么 '\xff' 没有被识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23819445/

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