gpt4 book ai didi

python - 异或十六进制/ASCII/转换问题

转载 作者:行者123 更新时间:2023-12-01 05:53:46 25 4
gpt4 key购买 nike

所以我有一个问题,我想异或各种十六进制字符串,将它们转换为常规英语字符串,然后将它们重新转换为十六进制字符串。然而,我不太熟悉以任何有意义的方式使用十六进制或异或。在执行按位异或运算之前,是否需要将十六进制转换为二进制或 unicode?如果是这样,完成后如何检索十六进制值?我一直在研究使用 str.encode('hex') 和 str.decode('hex'),但我不断收到错误消息,说我正在使用非十六进制字符。简而言之,我完全迷失了。

最佳答案

Python 有一个整数 XOR 运算符:^。以下是如何使用它:

>>> hex(int("123abc", 16) ^ int("def456", 16))
'0xccceea'

编辑:根据您的评论使用长十六进制字符串进行测试:

>>> def hexor(hex1, hex2):
... """XOR two hex strings."""
... xor = hex(int(hex1, 16) ^ int(hex2, 16))
... return xor[2:].rstrip("L") # get rid of "0x" and maybe "L"
...
>>> import random
>>> a = "".join(random.choice("0123456789abcdef") for i in range(200))
>>> b = "".join(random.choice("0123456789abcdef") for i in range(200))
>>> a
'8db12de2f49f092620f6d79d6601618daab5ec6747266c2eea29c3493278daf82919aae6a72
64d4cf3dffd70cb1b6fde72ba2a04ac354fcb871eb60e088c2167e73006e0275287de6fc6133
56e44d7b0ff8378a0830d9d87151cbf3331382b096f02fd72'
>>> b
'40afe17fa8fbc56153c78f504e50a241df0a35fd204f8190c0591eda9c63502b41611aa9ac2
27fcd1a9faea642d89a3a212885711d024d2c973115eea11ceb6a57a6fa1f478998b94aa7d3e
993c04d24a0e1ac7c10fd834de61caefb97bcb65605f06eae'
>>> hexor(a, b)
'cd1ecc9d5c64cc47733158cd2851c3cc75bfd99a6769edbe2a70dd93ae1b8ad36878b04f0b0
43281e94053d689c3f5e45392af75b13702e7102fa3e0a990ca0db096fcff60db1f672561c0d
cfd849a945f62d4dc93f01ecaf30011c8a6849d5f6af293dc'

关于python - 异或十六进制/ASCII/转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13363719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com