如何将任何对象转换为字节数组并将其保存在内存中?

How to convert any object to a byte array and keep it on memory?

我正在尝试为 Python 中的任何对象构建一个简单的字节数组转换器。我看了一下 pickle 但它只能创建一个文件,这不是我需要的。我还检查了 json.dump 但有些对象需要序列化程序才能转储。

我需要一个转换器来将我的对象保存在内存中,并且可以将任何对象转换为字节数组。

Picklerfile 参数只需要有一个 write(b) 接收字节的方法。原则上,你可以用你的方法 write(self,b) 编写你自己的 class 来做任何你想做的事情,并将那个 class 的对象传递给 Pickler

示例:

import pickle

class File:
  def write(self,b):
    print(b)

f = File()
p = pickle.Pickler(f)

object = 3.14
p.dump(object)

输出:b'\x80\x03G@\t\x1e\xb8Q\xeb\x85\x1f.'

您可以将它们附加到 list 或您想要的任何其他内容中,而不是像本例中那样打印字节。

我将其添加为实际答案,因为它似乎可以满足您的需求。您对 pickle.dump 的使用是问题所在,因为它旨在获取序列化对象并将其写入文件(尽管正如其他答案中指出的那样,它不一定必须这样做,但这不是重点)。

您要使用的函数是pickle.dumps,其中returns直接将序列化对象作为字节数组:

someobject = 123
bytes = pickle.dumps(someobject)