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

How to translate a known binary data into a object in Python?

比如我已经知道一个二进制数据:

"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.'"

这是一个字典对象。

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

您可以使用 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 模块不能反序列化任意二进制数据。

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