如何使用十六进制对 python 进行异或运算
How to xor in python using hex
假设我有一个 ascii 文本 "Hello World" 和一个十六进制字符串,我如何在 python 中将它们异或?
我知道这两个字符串的格式必须相同,但我不知道如何实现。
根据 "a hex string" 的确切含义,这应该很容易。例如:
>>> text=b'Hello World'
>>> hexi=b'\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 中相同。
假设我有一个 ascii 文本 "Hello World" 和一个十六进制字符串,我如何在 python 中将它们异或?
我知道这两个字符串的格式必须相同,但我不知道如何实现。
根据 "a hex string" 的确切含义,这应该很容易。例如:
>>> text=b'Hello World'
>>> hexi=b'\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 中相同。