Python內置數據結構--bytes、bytearray

bytes、bytearray

  • Python3引入兩個新類型
    • bytes
      • 不可變字節類型
    • byrearray
      • 字節數組
      • 可變
  • 字符串與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()
    • 返回16進製表示的字符串
      • 'abc'.encode().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,就地修改
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章