所以我正在使用C ++ MongoDB驱动程序进行测试
这是我的测试代码
在代码中,我制作了一个小的整数数组,并将其作为二进制插入到mongo数据库中。
当我遍历行时,我用这一行代码检索二进制文件
mongo::BSONElement array = obj["binTest"];
此时,我在此数组变量中具有BSONElement类型的二进制文件。我想将此二进制文件转换回整数数组。可以在api中看到执行此操作的功能
功能标题
const char* mongo::BSONElement::binData (int &len)const
我想运行该函数,以const char *格式获取二进制数据,然后将其转换为int数组。我可以抛弃它,还是我必须每隔4个字节自己将其放入一个数组中?
谢谢
只要您在具有相同字节序的硬件体系结构上运行代码(在PC上是小字节序),就可以将检索到的char指针强制转换为int32指针,并将其视为int32数组。
但是,如果您想进行数据交换或跨平台的互操作性,那么出于存储/交换目的,将数据类型的数组视为字节数组将是一个坏主意。
您需要考虑不同的硬件平台可能具有不同的耐久性。在这种情况下,将char指针强制转换为int32 *是行不通的,您将需要获取各个字节并组成int32值。但这可能会变得更加棘手,因为将int32的字节序写入BSON-BinData的字节序与运行“写入代码”的计算机体系结构的字节序完全相同-您需要知道再次对binData进行解码。
您还需要考虑到,对于其他数据类型的数组,即使使用相同的硬件体系结构,转换也可能无法进行。例如,在Intel x86 / x64平台的流行操作系统之间,长数据类型的大小是不同的:http : //software.intel.com/zh-cn/articles/size-of-long-integer-type-不同的架构和操作系统
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句