在 C/C++ 中将数组拆分为块
Split array into chunks in C/C++
我正在寻找一种在 C/C++ 中使用标准 Win32 和 C/C++ 函数将数组拆分为多个数组的方法。
下面是一个示例,我如何将文件读入数组。
using namespace std;
LPSTR File_To_Read = "FILE.exe";
DWORD File_To_Read_Size = NULL;
DWORD inputSize = NULL;
PBYTE inputData = NULL;
ifstream input(File_To_Read, ifstream::binary | ifstream::ate);
File_To_Read_Size = static_cast<DWORD>(input.tellg());
input.seekg(input.beg);
inputData = new BYTE[File_To_Read_Size];
input.read(reinterpret_cast<char*>(inputData), File_To_Read_Size);
input.close();
现在我想像这样拆分输入数据。
DWORD inputSize_part1;
DWORD inputSize_part2;
DWORD inputSize_part3;
PBYTE inputData_part1;
PBYTE inputData_part2;
PBYTE inputData_part3;
所以在后面我也可以把它们重新组合在一起。
我应该怎么做?我会展示一个我尝试过的示例代码,但我的代码对你们专家来说没有多大意义。
编辑:@IKH 区块大小应大致相同。因此,如果inputData是33kb,那么inputData_part1(和inputSize_part1)应该是11kb,inputData_part2(和inputSize_part2)应该是11kb,依此类推。因此,最终将有3x 11kb数组和DWORDS的大小。
DWORD inputSize_part1 = inputSize / 3;
DWORD inputSize_part2 = inputSize / 3;
DWORD inputSize_part3 = inputSize - inputSize_part1 - inputSize_part2;
PBYTE inputData_part1 = inputData;
PBYTE inputData_part2 = inputData + inputSize_part1;
PBYTE inputData_part3 = inputData + inputSize_part1 + inputSize_part2;
现在,三个块有三个指针和三个大小:前两个块是第三个或略小的块,如果原始块不能均匀整除,第三个块可能会稍微大一点。 当您使用所有块时,您需要delete[] inputData
。
块大小应该无关紧要。跟进@pmg的评论,在行input.read(reinterpret_cast<char*>(inputData), File_To_Read_Size);
之后,您有一个数组来存储数据。最短数组的大小将始终File_To_Read_Size / 3
,因为这是您要将其拆分为的数组数。对于访问,所使用的索引将通过所选数组的索引略微增加,如下所示:
//assume array_index is the number of the array you are accessing (1,2, or 3)
//and position is the location you are trying to access in that array
BYTE result = inputData[position + (array_index - 1)];
使用它,您只需要知道File_To_Read_Size % 3
是什么。如果File_To_Read_Size % 3 == 1
,则第一个数组包含最后一个 BYTE。否则,如果File_To_Read_Size % 3 == 2
,则第二个数组包含最后一个 BYTE。否则,所有数组的大小相同。因此,前两个if
中的每一个都将检查索引是否有效。
- 如何拆分文件中.txt字母并使用c ++使用数组进行扑克?
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 给定一个大小为 N 的数组 S,检查是否可以将序列拆分为两个序列
- 拆分字符数组并存储为向量
- 通过拆分字符数组来创建字符串
- 在C++中用字符串数组拆分声明和赋值
- 如何拆分整数并将所有内容添加到数组中?
- C++将大型数组拆分/分区为较小的数组
- 如何调试此代码以按空格将数组拆分
- 将一个std::数组拆分为一个较小大小的std::array元组
- 编辑:根据偶数和奇数元素将数组拆分为两个
- 使用提升range_iterator数组拆分字符串
- 将数组拆分为子块
- 将字符数组拆分为字母数字字符和非字母数字字符
- C++中的数组拆分
- 将字符数组拆分为字符串
- 将数组拆分为两个独立的数组
- 将字符数组拆分为两个字符数组
- 如何将字符指针数组拆分为两个带有分隔符的新字符指针数组
- 是否有STL函数将c风格的数组拆分/拼接成更小的数组?