W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
你想將一個(gè)十六進(jìn)制字符串解碼成一個(gè)字節(jié)字符串或者將一個(gè)字節(jié)字符串編碼成一個(gè)十六進(jìn)制字符串。
如果你只是簡(jiǎn)單的解碼或編碼一個(gè)十六進(jìn)制的原始字符串,可以使用 binascii
模塊。例如:
>>> # Initial byte string
>>> s = b'hello'
>>> # Encode as hex
>>> import binascii
>>> h = binascii.b2a_hex(s)
>>> h
b'68656c6c6f'
>>> # Decode back to bytes
>>> binascii.a2b_hex(h)
b'hello'
>>>
類似的功能同樣可以在 base64
模塊中找到。例如:
>>> import base64
>>> h = base64.b16encode(s)
>>> h
b'68656C6C6F'
>>> base64.b16decode(h)
b'hello'
>>>
大部分情況下,通過使用上述的函數(shù)來轉(zhuǎn)換十六進(jìn)制是很簡(jiǎn)單的。上面兩種技術(shù)的主要不同在于大小寫的處理。函數(shù) base64.b16decode()
和 base64.b16encode()
只能操作大寫形式的十六進(jìn)制字母,而 binascii
模塊中的函數(shù)大小寫都能處理。
還有一點(diǎn)需要注意的是編碼函數(shù)所產(chǎn)生的輸出總是一個(gè)字節(jié)字符串。如果想強(qiáng)制以Unicode形式輸出,你需要增加一個(gè)額外的界面步驟。例如:
>>> h = base64.b16encode(s)
>>> print(h)
b'68656C6C6F'
>>> print(h.decode('ascii'))
68656C6C6F
>>>
在解碼十六進(jìn)制數(shù)時(shí),函數(shù) b16decode()
和 a2b_hex()
可以接受字節(jié)或unicode字符串。但是,unicode字符串必須僅僅只包含ASCII編碼的十六進(jìn)制數(shù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: