但是将内存转换为字节数组?

时间:2010-08-17 18:29:24

标签: c++ database bytearray

现在我有了一个数据库,其中一个字段类型是一个byte数组。

现在我有一块记忆或物体。如何将这段内存甚至一个对象转换为字节数组,以便我可以将字节数组存储到数据库中。

假设对象是

Foo foo

记忆是

buf         (actually, don't know how to declare it yet)

数据库字段是

byte data[256]

只有像x'1'这样的十六进制值可以插入到字段中。

非常感谢!

2 个答案:

答案 0 :(得分:3)

有两种方法。

一个很简单但有严重的局限性。您可以编写Foo对象的内存映像。缺点是,如果您更改了编译器或Foo的结构,那么您的所有数据可能不再可加载(因为图像不再与对象匹配)。要做到这一点,只需使用

&Foo

作为字节数组。

另一种方法称为“serialization”。如果对象发生更改,则可以使用它 但增加了大量空间来编码信息。如果你只有256个字节,那么你 需要注意序列化不会创建太大而无法保存的字符串。

答案 1 :(得分:1)

Boost有一个你可能想看的serialization library,但你需要注意创建的对象的大小。如果您只使用一小组类来执行此操作,则可能需要自己编写编组和解组函数。

来自文档:

“在这里,我们使用术语”序列化“来表示将任意一组C ++数据结构可逆地解构为字节序列。”