2017-05-25 104 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

那麼你顯然不知道大聲笑 –

相關問題