我想转换包含hex literal的字符串,例如:
s = 'FFFF'
到包含文字字符串的十六进制值,如下所示:
h = 0xFFFF
所以,我需要一个函数来进行这种转换。例如:
h = func('FFFF')
我必须使用什么功能?
答案 0 :(得分:4)
int
有一个关键字选项base
:
In [1]: s = 'FFFF'
In [2]: int(s, base=16)
Out[2]: 65535
答案 1 :(得分:0)
如果您希望十六进制表单是对象的实际repr
表示,则需要子类int
并实现__repr__
:
class Hex(int):
def __new__(cls, arg, base=16):
if isinstance(arg, basestring):
return int.__new__(cls, arg, base)
return int.__new__(cls, arg)
def __repr__(self):
return '0x{:X}'.format(self)
此处我还实施了__new__
以使16
(而不是10
)成为默认base
,因此您可以执行以下操作:
>>> Hex('FFFF') # base defaults to 16
0xFFFF
>>> Hex('42', 10) # still supports other bases
0x2A
>>> Hex(65535) # and numbers
0xFFFF
您还必须article允许Hex
个实例用于加法,减法等等(否则您只会得到一个简单的int
)。