Python3 bytes和bytearray

文章目录

  • bytes、bytearray
    • 一丶bytes
        • 1.bytes定义方法
        • 2.bytes操作
    • 二丶bytearray
        • 1.bytes定义
        • 2.bytearray操作

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.from_bytes(bytes, byteorder)
    bytes类型转换为十进制整数int类型
In [6]: a = int.from_bytes(b"abc", "big")

In [7]: hex(a)
Out[7]: '0x616263'
  • 索引,返回一个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')

更多详细方法请参考官方文档bytes

你可能感兴趣的:(Python)