Python3中內置類型bytes和str用法及byte和string之間各種編碼轉換


python3最重要的新特性大概要算對文本和二進制數據做了更為清晰的區分,文本總是unicode字符集,有str類型表示,二進制數據則有bytes類型表示。python3不會以任何隱式的方式混用str和bytes,正是這是的這兩者的區別特別明顯,你不能拼接字符串和字節包,也無法在字節包里搜索字符串(反之亦然),也不能將字符串傳入參數為字節包的函數(反之亦然);

我們不關心字符串在內部是如何被表示的,也不關心它用幾個字節來表示每個字符。只有在將字符串編碼成字節(如用於通信信道的傳輸)或將字節解碼成字符串時,才考慮這些問題。

 

 

 

1. 創建bytes類型數據

>>> a = bytes([1,2,3,4])

>>> a

b'\x01\x02\x03\x04'

>>> type(a)

<class 'bytes'>

>>>

>>> a = bytes('hello','ascii')

>>>

>>> a

b'hello'

>>> type(a)

<class 'bytes'>

>>> 

 

2. 編碼可以將抽象字符以二進制數據的形式表示,有很多編碼方法,如utf-8、gbk等,可以使用encode()函數對字符串進行編碼,轉換成二進制字節數據,也可用decode()函數將字節解碼成字符串;用decode()函數解碼,可不要用指定編碼格式;

>>> a = 'hello world'

>>> type(a)

<class 'str'>

>>> a

'hello world'

>>>

a. 按utf-8的方式編碼,轉成bytes:以及解碼成字符串

>>> b = a.encode(encoding='utf-8')

>>> type(b)

<class 'bytes'>

>>>

>>> b

b'hello world'

>>>

>>>

>>> c = b.decode(encoding='utf-8')

>>> type(c)

<class 'str'>

>>> c

'hello world'

>>>

b. 按gbk的方式編碼,轉成bytes:以及解碼成字符串

>>> x = a.encode(encoding='gbk')

>>> type(x)

<class 'bytes'>

>>>

>>> x

b'hello world'

>>>

>>> y = x.decode()

>>> type(y)

<class 'str'>

>>>

>>> y

'hello world'

>>>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM