假设我有一个 ascii 文本“Hello World”和一个十六进制字符串,我如何在 python 中对它们进行异或?
我知道这两个字符串必须采用相同的格式,但我不知道如何实现它。
最佳答案
根据“十六进制字符串”的具体含义,它应该很容易。例如:
>>> text=b'Hello World'
>>> hexi=b'\12\34\45\EF\CD\AB'
>>> xors=[ord(t)^ord(x) for t,x in zip(text,hexi)]
>>> xors
[66, 121, 73, 48, 42, 102, 11, 44, 54, 48, 37]
现在您必须决定如何表示这个小整数列表。 array.array
是最好的,或者作为字节串:
>>> b''.join(chr(x) for x in xors)
'ByI0*f\x0b,60%'
(在 Python 3 中,这将显示为前导 b
,其中字节字符串和实际文本之间的区别更加清晰明确,但我在此显示的所有代码在 Python 中的工作方式相同2 和 3)。
关于python - 如何在Python中使用十六进制进行异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036818/