Unicode文字列を16進表現に変換したいと思います。たとえば、u'\u041a\u0418\u0421\u0410'
は"\xD0\x9A\xD0\x98\xD0\xA1\xD0\x90"
に変換する必要があります。以下のコードを試しました(python 2.7):
unicode_username.encode("utf-8").encode("hex")
しかし、私は文字列を取得します:
'd09ad098d0a1d090'
\xD0\x9A\xD0\x98\xD0\xA1\xD0\x90
を取得する方法について何か提案はありますか?
string.encode('utf-8')
を実行すると、16進表記に変わります。
しかし、それを印刷すると、元のUnicode文字列が得られます。
16進表記が必要な場合は、repr()
関数を使用して次のように取得できます。
>>> print u'\u041a\u0418\u0421\u0410'.encode('utf-8')
КИСА
>>> print repr(u'\u041a\u0418\u0421\u0410'.encode('utf-8'))
'\xd0\x9a\xd0\x98\xd0\xa1\xd0\x90'
次のことも試すことができます。
print "hex_signature : ",'\\X'.join(x.encode("hex") for x in signature)
結合関数は区切り文字「\ X」とともに使用されるため、バイトから16進数への変換ごとに\ Xが挿入されます。結合関数は、ループ内の変数シグネチャのバイトごとに実行されます。すべてが結合/連結され、印刷されます。