十六进制值的Python XOR运算符

时间:2017-02-05 02:51:43

标签: python bit-manipulation xor

我正在试图弄清楚如何获取字符串中每个字节的XOR:

string = "\xa3\xb4\x55"

100000(二进制)。我怎么能在python中这样做?我试过这样做:

newString = ""
for n in string:
    new = n ^ 0x20
    newString.append(new)

我需要newString的输出看起来像

output = "\x83\x94\x75"

但我目前没有得到:-(任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

您需要使用ord(..)转换为数字,然后使用chr(..)返回角色。

>>> "".join(chr(ord(x) ^ 0x20) for x in "\xa3\xb4\x55")
'\x83\x94u' # 'u' => '\x75'

答案 1 :(得分:1)

您需要将每个字符转换为其charcode,然后在charcodes上执行xor。之后,您将结果转换回字符,结果如下:

string = "\xa3\xb4\x55"

newString = ""
for n in string:
    new = chr(ord(n) ^ 0x20)
    newString += new

print(newString)

Here's a working example