将常量字符* 类型转换为 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 数组。
但是,如果您考虑了数据交换或跨平台互操作性,那么出于存储/交换目的,将数据类型数组视为字节数组将是一个坏主意。
您需要考虑不同的硬件平台可能具有不同的 endianess。在这种情况下,将 char 指针强制转换为 int32* 将不起作用,您需要获取各个字节并组成 int32 值。但它可能会变得更加棘手,因为写入BSON-BinData的int32的字节序与运行"编写代码"的计算机架构完全相同 - 你需要知道这一点才能再次解码binData。
您还需要考虑,对于其他数据类型的数组,尽管使用相同的硬件体系结构,强制转换可能不起作用。例如,在英特尔 x86/x64 平台的流行操作系统中,long 数据类型的大小是不同的:http://software.intel.com/en-us/articles/size-of-long-integer-type-on-different-architecture-and-os
- 按字符值访问int数组
- 将 int 数组转换为 std::vector<int*>
- C++,在int数组中输入字符串或字符会输出0,而不是ascii或error
- 整数区间(或 int 数组)中每个数字的出现次数
- Int 数组到C++容器
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- 如何检测将文本文件读入 int 数组的新行
- C++快速将 int 数组内容转储到文本文件中
- <string> 如何在使用 SWIG 时将 int 数组和 List 作为参数传递给 C# C++
- 如何制作不允许重复值的 C++ int 数组循环?
- 如何将逗号分隔的文件读取为 2D int 数组?
- int 数组,但索引是字符?
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 将 int 数组转换为带有小数C++的双精度数组
- 将双精度值分配给 int 数组时的类型转换
- 已编辑 我如何将其拆分为 char 和 int 数组
- 从 C++ 中的 int ** 数组访问元素
- C++程序无法分配 int 数组?
- 我正在编写一个代码来将 int 数组存储在文件中,然后用 c++ 检索它,但是检索第一项是假值,我该如何解决这个问题?
- 如何通过头文件中的函数初始化 const int 数组?