以下代码将UUID转换为“字符串化十六进制格式”。我真的不明白它的作用以及如何用新的str.format
样式重写它。
if not isinstance(value, uuid.UUID):
return "%.32x" % uuid.UUID(value).int
else:
# hexstring
return "%.32x" % value.int
答案 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
值以十进制表示,因此此函数提供十六进制表示,但不带连字符。