如何异或十六进制字符串?

Leo*_*Leo 2 python hex

有人可以帮助理解它在python(2.7.3版本)中的工作原理吗?

例如,有两个十六进制字符串

a='5f70a65ac'
b='58e7e5c36'
Run Code Online (Sandbox Code Playgroud)

我怎么能正确地测量它?

我试过用这样的东西hex (0x5f0x70 ^ 0x580xe70),但它不起作用

kin*_*all 7

在尝试对它们进行数学运算之前将字符串转换为整数,然后再返回字符串.

print "%x" % (int(a, 16) ^ int(b, 16))
Run Code Online (Sandbox Code Playgroud)

我在%这里使用转换回字符串而不是hex()因为hex()添加0x到开头(L如果值是一个长整数,则结束).您可以将它们剥离,但更容易就是不首先生成它们.

你也可以在第一时间把它们写成十六进制文字:

a=0x5f70a65ac
b=0x58e7e5c36
print "%x" % (a ^ b)
Run Code Online (Sandbox Code Playgroud)

但是,如果您从文件中读取它们或从用户或其他任何方式获取它们,则第一种方法就是您所需要的.

  • 或者使用`format()`:`"{0:x}".format((int(a,16)^ int(b,16)))`或`format(int(a,16)^ int(b ,16),"x").` (2认同)