以下代碼將UUID轉換爲「字符串化的十六進制格式」。我不太明白它的作用,以及我如何用新的str.format
風格重寫它。字符串十六進制格式的含義是什麼?
if not isinstance(value, uuid.UUID):
return "%.32x" % uuid.UUID(value).int
else:
# hexstring
return "%.32x" % value.int
以下代碼將UUID轉換爲「字符串化的十六進制格式」。我不太明白它的作用,以及我如何用新的str.format
風格重寫它。字符串十六進制格式的含義是什麼?
if not isinstance(value, uuid.UUID):
return "%.32x" % uuid.UUID(value).int
else:
# hexstring
return "%.32x" % value.int
它基本上寫沒有hypens的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'
我們可以看到,在十六進制UUID的兩個__str__
和__repr__
農產品交涉,但用連字符連接。 int
值是十進制的,所以這個函數提供了十六進制表示,但沒有連字符。
這意味着UUID是由不能直接打印的二進制數據組成的。因此,爲了能夠將它作爲字符串處理,它將被轉換爲一串十六進制字符(0 - 9,a - f)。每2個字符代表一個字節的數據。
謝謝!如何在不使用舊字符串格式風格的情況下完成同樣的任務? – R3turnz
一旦你有一個'UUID'對象,你可以使用'value.hex'它會產生相同的結果 – CoryKramer