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:解碼