字节处理
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
标签:字节,encoding,处理,bytes,int,字符串,hello
From: https://www.cnblogs.com/fallrain/p/17051027.html