python - 如何异或等于十六进制字符串?

标签 python hex

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

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

a='5f70a65ac'
b='58e7e5c36'

我怎样才能正确地异或它?

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

最佳答案

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

print "%x" % (int(a, 16) ^ int(b, 16))

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

您也可以首先将它们写成十六进制文字:

a=0x5f70a65ac
b=0x58e7e5c36
print "%x" % (a ^ b)

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

关于python - 如何异或等于十六进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13347237/

相关文章:

python - Flask-socketio 在后台线程中复制文件时丢失事件

python - Django:(1048, "Column ' user_id'不能为空”)

将实数转换为十六进制单精度表示并再次返回的 Matlab 函数/脚本

r - 绘制颜色十六进制代码矩阵

javascript - html5 canvas 是否支持带 alpha 的十六进制颜色?

C++ 如何将 int 转换为十六进制字符(如 0x0A,而不是 "0A")

python - 使用 sockjs-tornado 的私有(private)消息传递

python - Google Maps API -地址到坐标(纬度,经度)

python - 根据条件合并列

Lua - 十六进制 float