2017-05-25 144 views
1

我有一个程序,包括这一行:如何将一个ASCII字符转换为C++中的十六进制字符?

int xoredValue = (x^0x41); 

其中x是我用它和十六进制代码的二进制形式进行XOR一个int。 0x41是为了表示一个ASCII字母。而不是使用0x41,我想做它

char a = 'a'; 
    int xoredValue = (x^<hex of a>); 

我一直想弄清楚如何一段时间,它是油炸我的面条。任何帮助?

+1

您应该可以只做'x^a' – Justin

+2

表示法不影响行为。 'x&0x41'等价于'x&a'。请注意,字符“0x41”是“A”而不是“a”。 'A','0x41'和'65'都是相同的值。 –

+0

哦,哇,谢谢!它工作大声笑 –

回答

8

你没有。

一个数字是一个数字是一个数字。

0x41是一个数字,与65一样,(与直觉相反)'A'。无论是十六进制还是十进制还是八进制,都与XOR运算符的运行完全无关,该运算符可用于号码

您的特定号码被称为a(因为这是您存储变量的名称)。

所以,只写x^a

+0

我希望那里有一个重言式的旗帜。 +1缺少它。 – Columbo

+0

是的,我知道,我之所以提到char a ='a'的原因是因为我使用了一个传入的数组,因为我无法弄清楚什么是错的。我没有意识到,我使用十六进制'A'而不是'一个'之前是一个很大的问题 –

+0

那么你显然不知道大声笑 –

相关问题