繁体   English   中英

将const char *类型转换为int数组

[英]Convert const char* type to int array

所以我正在使用C ++ MongoDB驱动程序进行测试

这是我的测试代码

http://pastebin.com/eQUekQU2

在代码中,我制作了一个小的整数数组,并将其作为二进制插入到mongo数据库中。

我在遍历行时使用此代码行检索二进制文件

mongo::BSONElement array = obj["binTest"];

此时,我在此数组变量中具有BSONElement类型的二进制文件。 我想将此二进制文件转换回整数数组。 可以在api中看到执行此操作的功能

http://api.mongodb.org/cplusplus/current/classmongo_1_1_b_s_o_n_element.html#a8f4902eacf15f5069f4bb752bfd0aef4

功能标题

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-上不同的体系结构和操作系统

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM