web-dev-qa-db-ja.com

Unicode文字列を16進表現に変換する

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を取得する方法について何か提案はありますか?

4
Alex Vyushkov

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'
5
MYGz

次のことも試すことができます。

print "hex_signature :  ",'\\X'.join(x.encode("hex") for x in signature)

結合関数は区切り文字「\ X」とともに使用されるため、バイトから16進数への変換ごとに\ Xが挿入されます。結合関数は、ループ内の変数シグネチャのバイトごとに実行されます。すべてが結合/連結され、印刷されます。

0
Joniale