Python內建資料結構--bytes、bytearray
sanqi2469發表於2018-03-30
bytes、bytearray
- Python3引入兩個新型別
- 字串與bytes
- 字串是由字元組成的有序序列,字元可以使用編碼來理解
- bytes是位元組組成的有序的不可變序列
- bytearray是位元組組成的有序的可變序列
- 編碼與解碼
- 字串按照不同的字符集編碼encode返回位元組序列bytes
encode(encoding="utf-8",errors="strict") -> str
- 位元組序列按照不同的字符集解碼decode返回字串
bytes.decode(encoding="utf-8",errors="strict") -> str
bytearray.decode(encoding="utf-8".errors="strict") -> str
butes定義
- 定義
bytes()
空bytesbytes(int)
指定位元組的bytes,被0填充bytes(iterable_of_ints) -> bytes[0,255]
的int組成的可迭代物件bytes(string, encoding[, errors]) -> bytes
等價於string.encode()
bytes(bytes_or_buffer) -> immutable copy of bytes_or_buffer
從一個位元組序或者buffer複製出一個新的不可變的bytes物件- 使用b字首定義
- 只允許基本ASCII使用字元形式b’abc9’
- 使用16進製表示b”\x41\x61”
bytes操作
- 和str型別類似,都是不可變型別,所以方法很多都一樣。只不過bytes的方法,輸入是bytes,輸出是bytes
b'abcdef'.replace(b'f',b'k')
b'abc'.find(b'b')
- 類方法 bytes.fromhex(string)
- string必須是2個字元的16進位制的形式,’6162 6a 6b’,空格將被忽略
bytes.fromhex('6162 09 6a 6b00')
- hex()
- 索引
- b’abcde’[2] 返回該位元組對應的數,int型別
bytearray
- 定義
- bytearray() 空bytearray
- bytearray(int) 指定位元組的bytearray,被0 填充
- bytearray(iterable_of_ints) -> bytearray[0,255]的int組成的可迭代物件
- bytearat(string,encoding[, errors]) -> bytearray 近似string.encode(), 不可返回可變物件
- bytearray(bytes_or_buffer) 從一個位元組序列或者buffer複製出一個可變的bytearray物件
- 注意,b字首定義的型別是bytes型別
bytearray操作
- 和bytes型別的方法相同
- bytearray(b’abcdef’)replace(b’f’,b’k’)
- bytearray(b’abc’).find(b’b’)
- 類方法 bytearray.fromhex(string)
- string必須是2個字元的16進位制的形式。’6162 6a 6b’, 空格將被忽略
- bytearray.fromhex(‘6162 09 6a 6b00’)
- hex()
- 返回16進製表示的字串
- bytearray(‘abc’.encode()).hex()
- 索引
- bytearray(b’abcef’)[2] 返回該位元組對應的數,int型別
- append(int) 尾部追加一個元素
- insert(index, int) 在指定索引位置插入元素
- extend(iterable_of_ints) 將一個可迭代的整數集合追加到當前bytearray
- pop(index=-1) 從指定索引上移除元素,預設從尾部移除
- remove(value) 找到第一個value移除,找不到拋ValueError異常
- 注意:上述方法若需要使用int型別,值在[0, 255]
- clear() 清空bytearray
- reverse() 翻轉bytearray,就地修改