在 Python 3 中有没有办法用十六进制进行数学运算?

Is there a way to do math with hexadecimals in Python 3?

我正在使用 P2P 并希望让同行能够找到彼此。我正在构建我的网络,其中每个对等方都有一组理想的对等方可以在网络中寻找。这些对等点的 ID 为十六进制格式。在网络中,节点不断搜索 ID 最接近其理想位置的对等点(基于其自己的对等点 ID)。

查看谁最接近并在网络中找到其他对等点的最简单方法是将 ID 视为数字。在执行数学运算之前转换为整数会使事情严重复杂化。

>>> a = 0xA
>>> b = 0xa
>>> a + b
20
>>> hex(a + b)
'0x14'

十六进制和十进制,或任何其他类型的编码,实际上,基本上只是 1 和 0。 0xa0160 相同,后者与 0b10100000 相同,依此类推。当您执行 "math with hexadecimal," 时,"with hexadecimal" 完全是外围的。如果您有一个十六进制字符串,例如 "0xa0" 并想将其转换为您可以使用的数字,那么只需执行以下操作:

def from_hex(hexdigits):
    return int(hexdigits, 16)

x = "0xa0"
y = "0x10"
z = hex(from_hex(x) + from_hex(y))
print(z) # => 0xb0

除非您想从 int 创建自己的自定义子类,否则没有真正的解决方法,但这不值得。