python內置函數bytes、bytearray


一、bytes、bytearry

  • python3版本引入兩個新類型
  • bytes: 不可變字節序列  
  • bytearry:字節數組,可變

二、字符串與bytes

  •  字符串是字符組成的有序序列,字符可以使用編碼(ASCII)來理解
  •  bytes是字節組成的有序不可變序列
  •  bytearry是字節組成的有序可變序列

三、編碼與解碼

  •  編碼:字符串按照不同的字符集編碼encode返回字節序列bytes
  •     encode(encoding='utf-8',error='strict')
  •  
  •  解碼:字節序列按照不同的字符集解碼decode返回字符串
  • 舉例:
    • 編碼字符串‘abc’
       >>> bytes('abc','UTF8')
       b'abc'
       編碼字符串‘abc’
       >>> a = 'abc'.encode()
       >>> a
       b'abc'
       >>> type(a)
       <class 'bytes'>
       
       解碼字符串'abc'
       >>> a.decode()
       'abc'
       >>> a
       b'abc'
       
       影子拷貝
       >>> b = bytes(a)
       >>> b
       b'abc'
       
       實際比較a和b的值
       >>> id(a) == id(b)
       True
       
       實際比較內存id
       >>> id(a) is id(b)
       False
       >>> 

四、bytes定義

  •  bytes() 空bytes
  •  bytes(string,encoding)  返回bytes類型,等價於string.encode()
  •  bytes(bytes_or_buffer)  從一個字節序列或者buffer復制出一個新的不可變的bytes對象
  •  使用b前綴定義,只允許基本ASCII使用字符形式,如b'abc'

五、bytes操作

  •  和字符串str類型操作類似,都是不可變類型,所以方法很多都是一樣,只不過bytes的方法,輸入時bytes,輸出是bytes
  • a.encode().hex() 返回16進制的字符串
  •  索引訪問:a[2] 返回該字節對應的ACSII對應的數,int類型
  • bytearray和bytes操作一樣
  • 舉例:
  • >>> a = b'abcdef'
    >>> a.replace(b'f', b'k')
    b'abcdek'
    >>> a.find(b'b')
    1
    >>>

  切割

  >>> a = b'abcdef'
  >>> a.split(b'b')
  [b'a', b'cdef']
  

  >>> 'abc'.encode().hex()  十六進制
  '616263'

  索引訪問
  >>> a[2]  對應的編碼數字
  99 



 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM