struct 进行二进制文件读写
struct是比较常用的对象序列化,二进制读写模块
pack(fmt, v1, v2, …) 按照给定的格式(fmt),把数据封装成字符串(实际上是类似于c结构体的字节流)
i int
f float
? _Bool
n=13000
x=96.45
b=True
sn=struct.pack(‘if?’,n,x,b) #序列化
把整型,浮点型,和布尔型,序列化,放在sn的序列化的二进制流中 b’\xc82\x00\x00f\xe6\xc0B\x01’ 长度为9
f.write(s.encode()) #字符串直接编码为字节串写入
读取
读取9个字节,将其解码,放在元组中
字符串写入时,利用encode编码的,解码时对应使用decode().
python的二进制文件,主要注意,写入时编码时用什么,解码时对应使用什么进行转换。
写入时使用pickle.dump(),则读取时就应用pickle.load()
写入时使用struct.pack()将其转换为bytes行,对应就需用struct.unpack()将bytes型转换为其原来类型。
使用int.tobytes()将整型转换为bytes型,需用int.frombytesI()将其转换为整型。int.to_bytes()以及int.from_bytes()