2017-07-25 27 views
-1

我在python中實驗過簡單的東西,當我用兩種不同的方式編寫相同的東西時,我得到了不同的結果。評估一個簡單的Python表達式

(ord(X) + I^ord(Y[I])) % 255 

我想要這個表達式爲等於例如57,由於5^ord(Y[5]) = 114(與I = 5,Y [I] = 'W')。我想,既然114+198=312312%255=57我ORD(x)的應該是198,但如果我寫的Python控制檯上:

(ord(chr(198)) +5^ord(Y[5])) % 255我得到188

相反,如果我寫:

(ord(chr(73)) +5^ord(Y[5])) % 255我得到我想要的東西:57

我是否錯過了這裏明顯的一些東西? 爲什麼我的思維方式錯了?

+4

'(ORD(CHR(198) + 5^ord(Y [5]))%255'是一個無效的Python表達式。 – vaultah

+1

您也寫過兩次完全相同(無效)的表達式,表示您得到兩個不同的結果。 – jdehesa

+0

對不起,我錯過了一個')' – malloc

回答

2

用一個簡單的案子:

>>> 1 + 1^1 
3 

如果你想在XOR首先要完成的,你需要把它周圍的括號,如

(ord(X) + (I^ord(Y[I]))) % 255 
+0

我以爲xor將首先被計算。這就是我所錯過的 – malloc