字符串化十六进制格式可能意味着什么?

时间:2017-08-06 19:52:29

标签: python string-formatting uuid

以下代码将UUID转换为“字符串化十六进制格式”。我真的不明白它的作用以及如何用新的str.format样式重写它。

    if not isinstance(value, uuid.UUID):
        return "%.32x" % uuid.UUID(value).int
    else:
        # hexstring
        return "%.32x" % value.int

取自SQLAlchemy documentation

2 个答案:

答案 0 :(得分:1)

这意味着UUID由不能直接打印的二进制数据组成。因此,为了能够将其作为字符串处理,它将转换为十六进制字符串(0 - 9,a - f)。每2个字符代表一个数据字节。

答案 1 :(得分:1)

它基本上写了uuid没有大肆宣传。例如,如果这是我得到一个uuid的方式,我可以提供以下表示

>>> value = uuid.uuid4()
>>> value
UUID('aa56cc68-01ca-49c6-a0dc-4f7104a9ee83')
>>> print(value)
aa56cc68-01ca-49c6-a0dc-4f7104a9ee83
>>> value.int
226419442665111776416141721028184895107
>>> "%.32x" % value.int
'aa56cc6801ca49c6a0dc4f7104a9ee83'

我们可以看到__str____repr__都以十六进制形式表示uuid,但是用连字符连接。 int值以十进制表示,因此此函数提供十六进制表示,但不带连字符。