字节处理

字节处理

bytesbytearray,这二者都是python的内置类型,区别在于前者是不可变序列,后者可变(类似于tuplelist的关系)。

字节转换

常用当属转成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可将后变为字符串)

字符串转字节序列:

  1. str.encode(encoding,errors)方法,encoding为编解码器,默认值为'utf-8'
'hello'.encode()
 b'hello'

​ bytes(source,encoding,errors)构造函数,创建一个新的字节序列,source为字符串,encoding为编解码器,必须指定encoding,没有默认值

bytes('hello',encoding='utf-8')

  1. bytes.decode(encoding,errors)方法,encoding必须与str.encode里的encoding相同

b'hello'.decode()
'hello'

ord 接收只包含一个Unicode字符的字符串作为参数,返回表示该字符的Unicode代码点的整数。

>>> ord('a')
97
posted @ 2023-01-14 00:04  kayoki  阅读(84)  评论(0)    收藏  举报