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 



 

原文地址:https://www.cnblogs.com/jiangzuofenghua/p/11362912.html