gpt4 book ai didi

c - C 中的 XOR 相同数据导致非零值。为什么?

转载 作者:行者123 更新时间:2023-12-02 05:47:21 28 4
gpt4 key购买 nike

如何异或指针指向的两个数据段?

我试过这个,一个基于 stackoverflow 上的类似解决方案,但输出不是我所期望的。

代码如下:

void printXor(){    
int j;
char* c = strdup("hey");
for(j = 0; j < strlen(c); j++){
c[j] ^= c[j];
}

printf("%d\n", *(int*)(c));
}

但输出是:7955712。输出不应该是0吗?我将“嘿”与“嘿”进行异或运算,它在 int 中的值是 0,对吧?

最佳答案

看看这个循环:

for(j = 0; j < strlen(c); j++) {
c[j] ^= c[j];
}

您正在修改 c 并使用 strlen 计算其长度。在第一个迭代器 strlen 返回 0 后循环停止。

如果将 7955712 转换为十六进制,则为 0x796500。 0x79 是 'y' 的代码,0x65'e' 的代码,最低有效字节是 0x00。由于您是在小端机器上运行它,因此您会得到一个空字符串。

关于c - C 中的 XOR 相同数据导致非零值。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51444506/

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