Python學習筆記015——序列(位元組陣列 bytearray)

weixin_33982670發表於2018-02-10

1 序列

常見的序列有:list   tuple  str  bytes(位元組串)  bytearray

2 位元組陣列bytearray

可變的位元組序列,相當於bytes的可變版本。

3 建立函式bytearray

建立bytearray物件的方法規則

bytearray()
bytearray(整數n)
bytearray(整型可迭代物件)
bytearray(b'字串')
bytearray(字串, encoding='utf-8')

示例:

>>> bytearray()
bytearray(b'')

>>> bytearray([1,2,3])
bytearray(b'\x01\x02\x03')

>>> bytearray(["a","b","c"])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: an integer is required

>>> bytearray(3)
bytearray(b'\x00\x00\x00')

>>> bytearray("abc",encoding="utf-8")
bytearray(b'abc')

>>> bytearray("abc")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: string argument without an encoding

4 運算操作

位元組陣列的操作方式與列表類似

+   +=   *   *=
比較運算:  < <= > >= == !=
in /not in 運算子
索引 index / 切片 slice

示例

>>> a = bytearray(b"abcde")

>>> a[0]
97

>>> print(a)
bytearray(b'abcde')

>>> a[1:] = bytearray(b'BCDE')  #切片賦值
>>> a
bytearray(b'aBCDE')

>>> a[0] = 0x41  #單元素賦值,A的ASCII值0x41
>>> a
bytearray(b'ABCDE')

>>> b = bytes(a)  #將位元組陣列轉成位元組串
>>> b
b'ABCDE'
>>> c = bytearray(b)  #將位元組串轉成位元組陣列
>>> c
bytearray(b'ABCDE')

5 bytearray常用方法

 

方法說明
ba 代表位元組陣列  
ba.clear() 清空
ba.append(n) 追加一個位元組(n為0~255的整數)
ba.remove(value) 刪除第一個出現的位元組,如果沒有則產生ValueError錯誤
ba.reverse() 位元組順序進行反轉
ba.decode(encoding='utf-8') 轉為字串
ba.find(sub[, start[,end]]) 查詢子位元組串

 

 

 

 

 

 

 

6 bytes、bytearray與str之間的區別

位元組串bytes、位元組陣列bytearray是二進位制資料組成的序列,其中每個元素由8bit二進位制(同1byte,同2位16進位制數,同0~255)組成。

位元組數計算機的語言,字串是人類的語言,他們之間通過編碼表形成一一對應關係。

最小的 ASCII 編碼表只需要一位位元組,且只佔用了其中 [31,127] 的碼位;

 

str 儲存unicodel 6字元(0~65535)

bytes/bytearry = str.encode(encoding="utf-8")

str = bytes/bytearray.decode(encoding="utf-8")

encode:編碼,decode:解碼

 

相關文章