簡體   English   中英

將十六進制值轉換為ASCII

[英]Converting a hex values to ASCII

最“ Pythonic”的翻譯方式是什么

'\xff\xab\x12'

進入

'ffab12'

我在尋找可以實現此功能的函數,但它們都希望轉換為ASCII(因此將'\\x40''a' )。 我想使用ASCII的十六進制數字。

有一個名為binascii的模塊,其中包含以下功能:

>>> import binascii
>>> binascii.hexlify('\xff\xab\x12')
'ffab12'
>>> binascii.unhexlify('ffab12')
'\xff\xab\x12'
original = '\xff\xab\x12'
result = original.replace('\\x', '')
print result

\\x是因為已轉義。 a.replace(b,c)只是替換的所有出現bca

您想要的不是ascii,因為ascii會將0x41轉換為'A'。 您只希望它以十六進制為基數,而不使用\\ x(在某些情況下為0x)

編輯!!
抱歉,我認為\\ x已轉義。 因此,\\ x后跟2個十六進制數字表示單個字符,而不是4。

print "\x41"

將打印

一種

因此,我們要做的就是將每個字符轉換為十六進制,然后像這樣打印它:

res = ""
for i in original:
   res += hex(ord(i))[2:].zfill(2)
print res

現在讓我們回顧一下這一行:

hex(ord(i))[2:]

ord(c) -返回char c的數值
hex(i) -返回int i的十六進制字符串值(例如,如果i=65 ,它將返回0x41
[2:] -從十六進制字符串中刪除“ 0x”前綴。
.zfill(2) -用零填充

因此,使用列表理解將使它變得更短:

result = "".join([hex(ord(c))[2:].zfill(2) for c in original])
print result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM