与无符号字符异或
Xor with unsigned char
我正在尝试在 64 位密钥和 64 位无符号字符数组之间执行 Xor,但我不断收到非常奇怪的输出。数据类型或操作顺序有问题吗?
#include <iostream>
using namespace std;
int main() {
unsigned char inputText = '7';
unsigned char key = 'a';
cout << "(input: 0x";
cout << " " << inputText << ") ^ (";
cout << "key: 0x";
cout << " " << key << ") = ";
cout << "0x ";
cout << (inputText ^ key);
cout << endl;
return 0;
}
这是输出:
(input: 0x 7) ^ (key: 0x a) = 0x 86
如您所见,xor 生成大整数,但没有证据表明十六进制值已被异或。 xor 的正确输出应该是:
0x d
你不是在对十六进制数字进行异或运算,而是对字符进行 ascii values 运算。
输入:“7”、“3”、“6”、“5”
ascii: 55, 51, 54, 53
key: '0', 'f', 'f', 'a'
ascii: 48, 102, 102, 97
结果:55^48、51^102、54^102、53^97
结果:7、85、80、84
我正在尝试在 64 位密钥和 64 位无符号字符数组之间执行 Xor,但我不断收到非常奇怪的输出。数据类型或操作顺序有问题吗?
#include <iostream>
using namespace std;
int main() {
unsigned char inputText = '7';
unsigned char key = 'a';
cout << "(input: 0x";
cout << " " << inputText << ") ^ (";
cout << "key: 0x";
cout << " " << key << ") = ";
cout << "0x ";
cout << (inputText ^ key);
cout << endl;
return 0;
}
这是输出:
(input: 0x 7) ^ (key: 0x a) = 0x 86
如您所见,xor 生成大整数,但没有证据表明十六进制值已被异或。 xor 的正确输出应该是:
0x d
你不是在对十六进制数字进行异或运算,而是对字符进行 ascii values 运算。
输入:“7”、“3”、“6”、“5”
ascii: 55, 51, 54, 53
key: '0', 'f', 'f', 'a'
ascii: 48, 102, 102, 97
结果:55^48、51^102、54^102、53^97
结果:7、85、80、84