Sid*_*rma 2 c++ xor bitwise-xor
我有两个字符串如下:
STRING1 : 011011110011000
STRING2 : 011001000001000
EXPECTED OUTPUT : 000010110010000
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用以下代码对它们进行异或(按位)时,输出为空.码:
for(int i = 0; i<15; i++)
{
final_key[i] = STRING1[i] ^ STRING2[i];
cout<<" XOR = "<<final_key[i];
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.
您正在尝试char
一次XOR 2 .尝试改为:
final_key[i] = ((STRING1[i]-'0') ^ (STRING2[i]-'0')) + '0';
Run Code Online (Sandbox Code Playgroud)
说明
有关ASCII值,请参阅此处.
为ASCII值'0'
是48,并且的ASCII值'1'
是49 48 ^ 49
是1,48 ^ 48
并且49 ^ 49
是0.这些将0或1的值返回到一个char
,这将代表任一EOF
字符(如果它是0)或SOH
炭(如果它是一个),它们都没有正确输出.
因此,您需要char
在执行XOR运算之前将每个转换为位(0或1).因此,您可以'0'
从每个中减去char
以获得数字的数字值,进行XOR操作,然后加回'0'
以获得正确的输出
归档时间: |
|
查看次数: |
10703 次 |
最近记录: |