我在python中尝试简单的事情,当我用两种不同的方式写相同的东西时,我会得到不同的结果。
(ord(X) + I ^ ord(Y[I])) % 255
我希望这个表达式等于例如57,因为5 ^ ord(Y[5]) = 114
(I = 5且Y [I] =' w')。我认为这是{{1 }和114+198=312
我的ord(x)应该是198,但如果我在python控制台上写:
312%255=57
我得到188。
相反,如果我写:
(ord(chr(198)) +5^ord(Y[5])) % 255
我得到了我想要的东西:57
我在这里错过了一些明显的事吗? 为什么我的思维方式错了?
答案 0 :(得分:2)
使用更简单的案例:
>>> 1 + 1 ^ 1
3
如果你想首先完成XOR,你需要在它周围加上括号,比如
(ord(X) + (I ^ ord(Y[I]))) % 255