2017-01-02 35 views
0

ユニコード文字列を16進表現に変換したい。 たとえば、u'\u041a\u0418\u0421\u0410'"\xD0\x9A\xD0\x98\xD0\xA1\xD0\x90"に変換する必要があります。 「ユニコード文字列を16進表現に変換する

'd09ad098d0a1d090' 

私は得ることができますどのように任意の提案\ XD0 \ x9A \ XD0 \ x98 \ XD0 \ XA1:しかし、私は文字列を取得

unicode_username.encode("utf-8").encode("hex") 

:私は以下のコード(のpython 2.7)を試してみました\ xD0 \ x90 "?

+2

2番目のエンコードを行わないでください。 'unicode_username.encode( "utf-8") ' - >'' \ xd0 \ x9a \ xd0 \ x98 \ xd0 \ xa1 \ xd0 \ x90 ''のようになります。 – DyZ

答えて

4

string.encode('utf-8')を実行すると、16進表記に変更されます。しかし、もしあなたがそれを印刷すれば、オリジナルのユニコード文字列を得るでしょう。あなたは16進表記をしたい場合は、このようにそれを得ることができます。

>>> 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' 
+0

そんなにありがとう! –

0

あなたも試すことができます。

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

に参加する機能は、各バイトのためになるように、セパレータ「\ X」で使用されています16進数変換で\ Xが挿入されます。結合関数は、ループ内の可変シグネチャの各バイトに対して実行されます。すべてが結合/連結され、印刷されます。

+0

このコードスニペットをご利用いただき、ありがとうございます。適切な説明(* meta.stackexchange.com/q/114762)は、*なぜ*これが問題の良い解決策であるかを示すことで長期的な価値を向上させ、将来の読者にとって他の同様の質問。あなたの前提を含め、あなたの答えを[編集]して説明を加えてください。 –

関連する問題