欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python3 bytes和bytearray

程序员文章站 2024-03-23 17:42:04
...

bytes、bytearray

Python3引入两个新类型:

  • bytes:不可变类型
  • bytearrayy:字节数组,可变

一丶bytes

1.bytes定义方法

  • bytes()空bytes
In [1]: bytes()
Out[1]: b''
  • bytes(int)指定字节的bytes,被0填充
In [2]: bytes(10)
Out[2]: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
  • bytes(interable_of_ints),范围为[0,255]的int组成的可迭代对象
In [3]: bytes([0x61,99,0b11100000])
Out[3]: b'ac\xe0'
  • bytes(string,encoding[,errors])等价于str.encode()
In [5]: bytes("abc",encoding="utf-8")
Out[5]: b'abc'
  • bytes(bytes_or_buffer)从一个字节序列或者buffer复制出来一个不可变的bytes对象
In [6]: b1=b"abc"

In [7]: b2=bytes(b1)

In [8]: b2
Out[8]: b'abc'
  • 使用b的前缀定义
  1. 只允许使用基本ASCII使用字符形式b"“abc9”
  2. 使用十六进制表示b"\x41\x61"

2.bytes操作

除了格式化方法(format和format_map)和几个处理unicode数据的方法(包括casefold、idecimal、isdentifier、isnumeric、isprintable和encode)之外,str类型的其他方法都支持bytes和bytearray

  • 类方法bytes.fromhex(string)
    string必须是2个字符的16进制形式,“61 62 6a 6b”,空格将被忽略
In [8]: a=bytes.fromhex("61 62 63 6a 6b") 

In [9]: a
Out[9]: b'abcjk'
  • hex()和上面相反
    返回进制的字符串
In [10]: b="abc".encode().hex()

In [11]: b
Out[11]: '616263
  • 索引,返回一个int类型数
In [12]: b"abcd"[1]
Out[12]: 98

二丶bytearray

1.bytes定义

  • bytearray()返回空的bytearray
In [2]: bytearray()
Out[2]: bytearray(b'')
  • bytearray(int)指定字节的bytearray,被0填充
In [3]: bytearray(10)
Out[3]: bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
  • bytearray(iterable_of_ints)范围为[0,255]的int组成的可迭代对象
In [4]: bytearray([98,0x61,0b01100001])
Out[4]: bytearray(b'baa'
  • bytearray(string,encoding[,errors]),近似于str.encode(),返回可变对象
In [7]: bytearray("ABCD",encoding="UTF-8")
Out[7]: bytearray(b'ABCD')
  • bytearray(bytes_or_buffer)从一个字节序列或者buffer复制出来一个新的可变的bytearray对象
In [8]: bytearray(b"abc")
Out[8]: bytearray(b'abc')

2.bytearray操作

  • 和bytes类型的方法相同
In [9]: bytearray(b"abcdefk").replace(b"f",b"m")
Out[9]: bytearray(b'abcdemk')
In [10]: bytearray(b"abcdefk").find(b"a")
Out[10]: 0
  • 类方法
    bytearray.fromhex(string)
    string必须是2个字符的16进制形式
In [11]: bytearray.fromhex("61 62 6364 65")
Out[11]: bytearray(b'abcde')
  • hex()上面的相反
In [12]: bytearray("abc".encode()).hex()
Out[12]: '616263'
  • 索引
In [13]: bytearray(b"abcde")[1]
Out[13]: 98
  • append(int)尾部追加一个元素
In [14]: b=bytearray()
In [15]: b.append(97)

In [16]: b
Out[16]: bytearray(b'a')
  • insert(index,int)在指定位置插入元素
In [17]: b.insert(1,99)

In [18]: b
Out[18]: bytearray(b'ac')
  • extend(iyterable_of_ints)将一个可迭代的整数集合追加到当前的bytearray
In [19]: b.extend([65,66,67])

In [20]: b
Out[20]: bytearray(b'acABC')
  • pop(index= -1)从指定的索引上一处元素,默认从尾部移除,返回移除的值的int类型
In [21]: b.pop()
Out[21]: 67
  • remove(value),找到第一个value移除,找不到抛异常
  • clear()清空bytearray
In [29]: b
Out[29]: bytearray(b'acA')

In [30]: b.clear()

In [31]: b
Out[31]: bytearray(b'')
  • reverse()就地翻转
In [27]: b
Out[27]: bytearray(b'Aca')

In [28]: b.reverse()

In [29]: b
Out[29]: bytearray(b'acA')