【发布时间】:2012-09-12 08:04:32
【问题描述】:
这里是一个简单的问题。 XOR 运算符 (^) 有问题。我可以很好地异或整数并得到正确的结果;但是,当对两个字符进行异或运算时,不会返回任何内容:
int main() {
char a = 'a';
char b = 'b';
char c;
c = a^b;
cout << c << endl;
}
什么都没有发生。没有输出。我在这里做错了什么。我正在尝试使用它对具有给定密钥的字符串进行 XOR 加密,但在此操作时遇到问题。我想我可以获取 ASCII 值并将其转换为相应的字符,但是这个工具将用于加密文件以及纯文本,所以我想不惜一切代价避免这种情况。
【问题讨论】:
-
你正在得到输出,你只是看不到它。
-
该操作的结果是
1,低于 32 左右的 ASCII 值是“不可打印的”。一个代表数据结束,一个是换行,一个是回车,一个是哔声……见asciitable.com(懒得回答,别人做) -
只需
std::cout << (int)c << '\n';即可查看。 -
小提示:如果您使用的是 UNIX/Linux,管道输出到
cat -vt有助于查看不可打印字符,因为它们被替换为可见符号(在本例中为“^C” )。
标签: c++ encryption xor