十六进制值上的 Python XOR 运算符



我试图弄清楚如何取字符串中每个字节的异或:

string = "xa3xb4x55"

使用 100000(二进制(。我将如何在python中做到这一点?我试过这样做:

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

我需要 newString 的输出看起来像

output = "x83x94x75"

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

您需要将每个字符转换为其字符代码,然后对字符代码执行异或。之后,您将结果转换回字符,结果如下:

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

这是一个工作示例

您需要使用

ord(..) 转换为数字,然后使用 chr(..) 转换回字符。

>>> "".join(chr(ord(x) ^ 0x20) for x in "xa3xb4x55")
'x83x94u' # 'u' => 'x75'

最新更新