Python內置數據結構--bytes、bytearray
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()
空bytes
bytes(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,就地修改