2017-01-02 190 views
0

我想將unicode字符串轉換爲其十六進制表示形式。例如,u'\u041a\u0418\u0421\u0410'應轉換爲"\xD0\x9A\xD0\x98\xD0\xA1\xD0\x90"。我想下面的代碼(蟒蛇2.7):將unicode字符串轉換爲十六進制表示形式

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

不過,我得到的字符串:

'd09ad098d0a1d090' 

任何建議,我怎麼能得到「\ XD0 \ x9A \ XD0 \ X98 \ XD0 \ XA1 \ XD0 \ X90" ?

+2

不要做第二個編碼。 'unicode_username.encode(「utf-8」)' - >''\ xd0 \ x9a \ xd0 \ x98 \ xd0 \ xa1 \ xd0 \ x90''。 – DyZ

回答

4

當你做string.encode('utf-8')時,它改變爲十六進制符號。但是,如果你打印它,你會得到原始的Unicode字符串。如果你想在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) 

join函數與隔「\ X」使用,使得每個字節十六進制轉換插入\ X.連接函數是在循環中爲變量簽名的每個字節完成的。一切都連接/連接並打印。

+0

感謝您使用此代碼段,這可能會提供一些有限的即時幫助。通過展示*爲什麼*這是一個很好的解決方案,並且使它對未來的讀者更有用,一個正確的解釋[將大大提高](// meta.stackexchange.com/q/114762)其長期價值其他類似的問題。請[編輯]你的答案以添加一些解釋,包括你所做的假設。 –

相關問題