如何将已知的二进制数据转换为Python中的对象?

时间:2016-04-16 06:01:41

标签: python io binary

例如,我已经知道二进制数据:

"b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.'"

这是一个字典对象。

如何将其翻译成dict对象?我只能找到将文件读入对象的方法,但我无法找到将现有数据转换为对象的方法。

1 个答案:

答案 0 :(得分:5)

您可以使用pickle module

将二进制数据转换为python对象
>>> bs = b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.'
>>> import pickle
>>> loaded = pickle.loads(bs)
>>> loaded
{'score': 88, 'age': 20, 'name': 'Bob'}

请注意,这仅适用于使用pickle模块中的工具序列化的对象 - pickle.dumppickle.dumps。 pickle模块不能反序列化任意二进制数据。

此外,您应该仅从受信任的源中取消对象,因为取消对象可能会导致代码执行。