字节处理
字节处理
bytes和bytearray,这二者都是python的内置类型,区别在于前者是不可变序列,后者可变(类似于tuple与list的关系)。
字节转换
常用当属转成int了,可以直接取[]索引取出单个字节得到int值:
a = b'abc'[0] # 97
通过这种方式 可将字符串按照ASCII码转成十进制数
也可以将bytearray转换成list得到一个int型数组:
arr = list(b'abc') # [97, 98, 99]
还可以通过int.frombyte()函数,将一个bytes整体转成int:
m = b'\xa0\x86\x01\x00'
a = int.from_bytes(m, byteorder='little', signed=True)
print(a) # 10000
a.hex()将返回一个字符串每个字节由16进制数组成
所有传入的参数不能是str字符串(如'abc'),依旧需要用b'abc'的形式; (通过在前面加b可将后变为字符串)
字符串转字节序列:
- str.encode(encoding,errors)方法,encoding为编解码器,默认值为'utf-8'
'hello'.encode()
b'hello'
bytes(source,encoding,errors)构造函数,创建一个新的字节序列,source为字符串,encoding为编解码器,必须指定encoding,没有默认值
bytes('hello',encoding='utf-8')
- bytes.decode(encoding,errors)方法,encoding必须与str.encode里的encoding相同
b'hello'.decode()
'hello'
ord 接收只包含一个Unicode字符的字符串作为参数,返回表示该字符的Unicode代码点的整数。
>>> ord('a')
97

浙公网安备 33010602011771号