Python:字符串到十六进制文字

时间:2015-07-24 09:22:08

标签: python

我想转换包含hex literal的字符串,例如:

s = 'FFFF'

到包含文字字符串的十六进制值,如下所示:

h = 0xFFFF

所以,我需要一个函数来进行这种转换。例如:

h = func('FFFF')

我必须使用什么功能?

2 个答案:

答案 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)。