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

Posted

技术标签:

【中文标题】如何在 Python 3 中异或两个十六进制字符串?【英文标题】:How to XOR two hex strings in Python 3? 【发布时间】:2016-01-23 14:16:21 【问题描述】:

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

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

【问题讨论】:

How to XOR two strings that contain hex numbers in python?的可能重复 【参考方案1】:

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

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

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

【讨论】:

使用:xored[2:] 去掉开头的“0x”。

以上是关于如何在 Python 3 中异或两个十六进制字符串?的主要内容,如果未能解决你的问题,请参考以下文章

go中异或运算带来的疑惑

C++中异或的使用例题?

c语言中a^b和a&b分别是什么意思啊

java中异或加密

CodeForces947 C. Perfect Security 异或Trie

java将两个字符串转为十六进制进行异或的结果是多少进制的,怎么做?