现在我有了一个数据库,其中一个字段类型是一个byte数组。
现在我有一块记忆或物体。如何将这段内存甚至一个对象转换为字节数组,以便我可以将字节数组存储到数据库中。
假设对象是
Foo foo
记忆是
buf (actually, don't know how to declare it yet)
数据库字段是
byte data[256]
只有像x'1'
这样的十六进制值可以插入到字段中。
非常感谢!
答案 0 :(得分:3)
有两种方法。
一个很简单但有严重的局限性。您可以编写Foo对象的内存映像。缺点是,如果您更改了编译器或Foo的结构,那么您的所有数据可能不再可加载(因为图像不再与对象匹配)。要做到这一点,只需使用
&Foo
作为字节数组。
另一种方法称为“serialization”。如果对象发生更改,则可以使用它 但增加了大量空间来编码信息。如果你只有256个字节,那么你 需要注意序列化不会创建太大而无法保存的字符串。
答案 1 :(得分:1)
Boost有一个你可能想看的serialization library,但你需要注意创建的对象的大小。如果您只使用一小组类来执行此操作,则可能需要自己编写编组和解组函数。
来自文档:
“在这里,我们使用术语”序列化“来表示将任意一组C ++数据结构可逆地解构为字节序列。”