我有两个字符串如下:
STRING1 : 011011110011000
STRING2 : 011001000001000
EXPECTED OUTPUT : 000010110010000
但是,当我尝试使用以下代码对它们进行异或(按位)时,输出为空白。代码:
for(int i = 0; i<15; i++)
{
final_key[i] = STRING1[i] ^ STRING2[i];
cout<<" XOR = "<<final_key[i];
}
任何帮助,将不胜感激。
原文由 Siddharth Sharma 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在尝试一次异或 2
char
。请尝试:解释
有关 ASCII 值,请参阅 此处。
The ASCII value for
'0'
is 48 and the ASCII value of'1'
is 49.48 ^ 49
is 1,48 ^ 48
and49 ^ 49
是 0。这些会将 0 或 1 的值返回给char
,这将代表EOF
char(如果为 0)或SOH
char(如果是一个),两者都不能正确输出。因此,您需要在执行 XOR 操作之前将每个
char
转换为位(0 或 1)。因此,您可以从每个char
中减去'0'
得到数字的数值,进行 XOR 运算,然后加回'0'
得到正确的输出