bytes
- 不可变字节序列
bytearray
字节数组
可变
字符串与bytes
- 字符串是字符组成的有序序列,字符可以使用编码来理解
- bytes是字节组成的有序的不可变序列
- bytearray是字节组成的有序的可变序列
编码与解码
-
字符串按照不同的字符集编码encode 返回字节序列bytes
- encode(encoding='utf-8',errors='strict') -> bytes
-
字节序列按照不同的字符集解码decode返回字符串
- bytes.decode(encoding='utf-8',errors='strict') -> str
- bytearray.decode(encoding='utf-8',errors='strict') -> str
bytes定义
十六进制的字符串表示方法是“\x”,十六进制数的时候用“0x”表示
bytes() -> 空bytes
bytes(int) -> 指定字节的bytes,被0填充
-
bytes(iterable_of_ints) -> bytes[0,255]的int组成的可迭代对象
- >>> bytes(range(0,5))
- b'\x00\x01\x02\x03\x04'
bytes(string,encoding[,errors]) -> bytes等价于string.encode()
bytes(bytes_or_buffer) -> immutable copy of bytes_of_buffer 从一个字节序列或者buffer复制出一个新的不可变的bytes对象
-
使用b前缀定义
只允许基本ASCII使用字符形式b'abc9'
-
使用16进制表示b'\x41\x61'
- >>> b'\x41\x61'.decode()
- 'Aa'
bytes操作
- 和str类型类似,都是不可变类型,所以很多都是一样。只不过bytes的方法,输入的是bytes,输出是bytes
bytes
b'abcdef'.replace(b'f',b'k')
b'abc'.find(b'b')
-
类方法bytes.formhex(string)
- string必须是2个字符的16 进制的形式,'6162 6a 6b',空格将被忽略
- bytes.fromhex('6162 09 6a 6b00')
-
hex()
返回16进制表示的字符串
'abc'.encode().hex()
-
索引
- b'abcdef'[2] 返回该字节对应的数,int类型
bytearray 定义
- bytearray() ->空bytearray
- bytearray(int) -> 指定字节的bytearray, 被0填充
- bytearray(iterable_of_ints) ->bytearray[0,255]的int组成的可迭代对象
- bytearray(string,encoding[,errors]) -> bytearray近似string.encode(),不过返回可变对象
- bytearray(bytes_or_buffer) 从一个字节序列或者buffer复制出一个新的可变bytearray对象
- 注意,b前缀定义的类型是bytes类型
bytearray操作
append(int) 尾部追加一个元素
insert(index,int) 在指定索引位置插入元素
extend(iterable_of_ints) 将一个可迭代的整数集合追加到当前bytearray
pop(index=-1)从指定索引上移除元素,默认从尾部移除
remove(value)找到第一个value移除,找不到抛ValueError异常
注意:上述方法若需要使用int类型,值在[0,255]
clear()清空bytearray
reverse()翻转bytearray,就地修改
int 和 bytes
-
int.from_bytes(bytes,byteorder)
- 将一个字节数组表示成整数
-
int.to_bytes(leng,byteorder)
- byteorder 字节序
- 将一个整数表达成一个指定长度的字节数组
>>> i = int.from_bytes(b'abc','big')
>>> i
6382179
>>>
>>> print(i,hex(i))
6382179 0x616263
>>> print(i.to_bytes(3,'big'))
b'abc'
ASCII
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套计算机编码系统。它主要用于显示现代英语,而其扩展版本EASCII则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646。其中33个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33个字符之外的是95个可显示的字符。用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。