2017-08-06 21 views
0

次のコードは、UUIDを「文字列化された16進形式」に変換します。私はそれが何をし、どのように私は新しいstr.formatスタイルでそれを書き換えることができたのか分かりません。文字列化された16進数形式の意味は何ですか?

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

SQLAlchemy documentationから取られます。

答えて

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の値は10進数であるため、この関数は16進表示を提供しますが、ハイフンは使用しません。

+0

ありがとうございました!古い文字列書式を使用しないで同じことをどうやって達成できますか? – R3turnz

+0

'UUID'オブジェクトを取得したら、' value.hex'を使うだけで同じ結果が得られます – CoryKramer

1

これは、UUIDが直接印刷できないバイナリデータで構成されていることを意味します。したがって、文字列として扱うには、16進文字列(0〜9、a〜f)に変換されます。各2文字は1バイトのデータを表します。

関連する問題