我有一个候选键(mongodb 候选键,__id),它在 Protocol Buffer 中如下所示:
message qrs_signature
{
required uint32 region_id = 1;
repeated fixed32 urls = 2;
};
当然,我不能在我的 bson 文档中使用 Protocol Buffer 编码字符串(通过 ParseToString(std::string)
),因为它可以包含非打印字符。因此,我使用 ascii85 编码对数据进行编码(使用 this library )。我有两个问题。
- b85 编码是否安全。
- 什么是bson's binary type for ?有什么方法可以使用 mongodb API 调用将我的(二进制)字符串植入到该字段中,还是只是语法糖来表示需要以某种形式处理的值类型(即,不是 native MongoDB实体)?
编辑
append binary
api 的节目数据被编码为十六进制(OMG!),因此 base85 更节省空间(在我的情况下,每条记录 22 个字节)。
最佳答案
- BSON 安全,是的。 ASCII85编码的输出也是有效的utf-8 iirc。
- 它用于存储大块的二进制数据。二进制数据是官方支持的类型,您应该能够使用适当的驱动程序代码(在您的情况下为 BSONObj)将二进制值推送到 BSON 字段。有关详细信息,请参阅您的驱动程序文档或源代码。
关于c++ - 二进制到文本编码、非打印字符、 Protocol Buffer 、mongodb 和 bson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988849/