1- bytes
b'C' b'\x01' b'\x010203' b'hello'
>>> a = b'\x01'
>>> type(a)
<class 'bytes'>
>>> a = b'C'
>>> type(a)
<class 'bytes'>
>>> a = b'\x010203'
>>> type(a)
<class 'bytes'>
>>> len(a)
5
>>> a = bytes()
>>> a
b''
>>> type(a)
<class 'bytes'>
>>>
>>>
>>> a = b'hello'
>>> type(a)
<class 'bytes'>
>>> a
b'hello'
Python3 bytes 函数
描述
bytes 函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本。
语法
以下是 bytes 的语法:
class bytes([source[, encoding[, errors]]])
参数
- 如果 source 为整数,则返回一个长度为 source 的初始化数组;bytes(int)指定字节的bytes,被0填充
- 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
- 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
- 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
- 如果没有输入任何参数,默认就是初始化数组为0个元素。
2-bytearray
>>> a = bytearray((1,2,4,5))
>>> type(a)
<class 'bytearray'>
>>> a
bytearray(b'\x01\x02\x04\x05')
描述
bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。
语法
bytearray()方法语法:
class bytearray([source[, encoding[, errors]]])
参数
- 如果 source 为整数,则返回一个长度为 source 的初始化数组;
- 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
- 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
- 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
- 如果没有输入任何参数,默认就是初始化数组为0个元素。
3-str与bytes之间的转换
# bytes object
b = b"example"
# str object
s = "example"
# str to bytes
s2b = bytes(s, encoding = "utf8")
# bytes to str
b2s = str(b, encoding = "utf8")
# an alternative method
# str to bytes
s2b2 = str.encode(s)
# bytes to str
bs2 = bytes.decode(b)
4-bytes、bytearray
Python3引入两个新类型:
- bytes:不可变类型
- bytearrayy:字节数组,可变
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操作
- 和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')
5-int byte
use python3 package struct
>>> bytes([97])
b'a'
>>> ord(b'a')
97
>>>