在 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。 0xa0
与 160
相同,后者与 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
创建自己的自定义子类,否则没有真正的解决方法,但这不值得。
我正在使用 P2P 并希望让同行能够找到彼此。我正在构建我的网络,其中每个对等方都有一组理想的对等方可以在网络中寻找。这些对等点的 ID 为十六进制格式。在网络中,节点不断搜索 ID 最接近其理想位置的对等点(基于其自己的对等点 ID)。
查看谁最接近并在网络中找到其他对等点的最简单方法是将 ID 视为数字。在执行数学运算之前转换为整数会使事情严重复杂化。
>>> a = 0xA
>>> b = 0xa
>>> a + b
20
>>> hex(a + b)
'0x14'
十六进制和十进制,或任何其他类型的编码,实际上,基本上只是 1 和 0。 0xa0
与 160
相同,后者与 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
创建自己的自定义子类,否则没有真正的解决方法,但这不值得。