字符串化的十六进制格式意味着什么?
What could be meant with stringified hex format?
以下代码将 UUID 转换为 "stringified hex format"。我不太明白它的作用以及如何以新的 str.format
风格重写它。
if not isinstance(value, uuid.UUID):
return "%.32x" % uuid.UUID(value).int
else:
# hexstring
return "%.32x" % value.int
意思是UUID是由二进制数据组成的,不能直接打印。所以为了能够将它作为一个字符串来处理,它被转换为一个十六进制字符的字符串(0 - 9,a - f)。每 2 个字符代表一个字节的数据。
它基本上是在没有连字符的情况下写 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
值是十进制的,因此此函数提供十六进制表示,但没有连字符。
以下代码将 UUID 转换为 "stringified hex format"。我不太明白它的作用以及如何以新的 str.format
风格重写它。
if not isinstance(value, uuid.UUID):
return "%.32x" % uuid.UUID(value).int
else:
# hexstring
return "%.32x" % value.int
意思是UUID是由二进制数据组成的,不能直接打印。所以为了能够将它作为一个字符串来处理,它被转换为一个十六进制字符的字符串(0 - 9,a - f)。每 2 个字符代表一个字节的数据。
它基本上是在没有连字符的情况下写 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
值是十进制的,因此此函数提供十六进制表示,但没有连字符。