如何在Python 3中对两个十六进制字符串进行异或?

时间:2015-10-23 22:55:15

标签: python string python-3.x hex xor

我有两个字符串存储在两个单独的文件string1="95274DE03C78B0BD"string2="48656c6c6f20576f"中。

如何在Python 3中对它们进行按位异或?我希望得到DD42218C5358E7D2作为我的结果。请注意,我不想ord()字符串,我的字符串已经是十六进制。

1 个答案:

答案 0 :(得分:3)

Python 3中的字符串是unicode对象,因此一串十六进制字符与内存中整数的二进制表示形式不对应(您需要使用XOR)。

考虑到这一点,您可以先将字符串解释为base-16整数,然后对它们进行异或,并将结果整数转换回十六进制字符串:

>>> hex(int(string1, 16) ^ int(string2, 16))
'0xdd42218c5358e7d2'