博客專欄

EEPW首頁 > 博客 > python中str、bytes、十六進制字符串的相互轉(zhuǎn)換方法

python中str、bytes、十六進制字符串的相互轉(zhuǎn)換方法

發(fā)布人:電子禪石 時間:2024-08-12 來源:工程師 發(fā)布文章

在Python中,str(字符串)、bytes(字節(jié)序列)以及十六進制字符串

(通常以字符串形式存在,但內(nèi)容表示十六進制數(shù))之間的轉(zhuǎn)換是非常常見的操作。

這里將詳細說明它們之間的轉(zhuǎn)換方法。


1. str 到 bytes 的轉(zhuǎn)換

要將str(字符串)轉(zhuǎn)換為bytes(字節(jié)序列),可以使用str的.encode()方法。

這個方法默認使用UTF-8編碼將字符串轉(zhuǎn)換成字節(jié)序列。


s = "hello"  

b = s.encode('utf-8')  # 使用UTF-8編碼  

print(b)  # 輸出: b'hello'

如果字符串包含非ASCII字符,確保使用正確的編碼以避免UnicodeEncodeError。


2. bytes 到 str 的轉(zhuǎn)換

將bytes(字節(jié)序列)轉(zhuǎn)換回str(字符串),可以使用bytes的.decode()方法。

這個方法默認也使用UTF-8編碼。


b = b'hello'  

s = b.decode('utf-8')  

print(s)  # 輸出: hello

如果bytes數(shù)據(jù)不是用UTF-8編碼的,你需要指定正確的編碼來避免UnicodeDecodeError。


3. str 表示的十六進制字符串到 bytes 的轉(zhuǎn)換

如果有一個十六進制字符串(即,字符串中的字符是十六進制數(shù),如"48656c6c6f"表示"hello"),可以使用bytes.fromhex()方法將其轉(zhuǎn)換為bytes。


hex_str = "48656c6c6f"  

b = bytes.fromhex(hex_str)  

print(b)  # 輸出: b'hello'

4. bytes 到 十六進制字符串(str)的轉(zhuǎn)換

將bytes轉(zhuǎn)換為十六進制字符串,可以使用bytes的.hex()方法。


b = b'hello'  

hex_str = b.hex()  

print(hex_str)  # 輸出: 48656c6c6f

總結(jié)

使用.encode()將str轉(zhuǎn)換為bytes。

使用.decode()將bytes轉(zhuǎn)換為str。

使用bytes.fromhex()將十六進制字符串(str)轉(zhuǎn)換為bytes。

使用.hex()將bytes轉(zhuǎn)換為十六進制字符串(str)。

注意:在進行編碼和解碼操作時,應(yīng)確保使用正確的字符編碼(如UTF-8),

以避免出現(xiàn)編碼錯誤。

————————————————


                        

原文鏈接:https://blog.csdn.net/AOMGyz/article/details/140373240


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: python

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉