gpt4 book ai didi

c++ - 将整个二进制文件读入缓冲区,然后以特定格式解析它

转载 作者:行者123 更新时间:2023-11-28 04:32:30 25 4
gpt4 key购买 nike

这是我的 C++ 作业。给定一个二进制文件,该文件由一些数据单元组成。每个数据单元包含两部分。第一部分是 1 char,第二部分是 1 int。一次将整个文件读入缓冲区,然后从缓冲区中提取所有数据单元。现在我已经像这样成功地将文件读入缓冲区:

char* readBinaryFile(const char* fileName) {
ifstream file(fileName, ios::binary || ios::ate);

// get the size of file
streampos beg, end;
beg = file.tellg();
file.seekg(0,ios::end);
end = file.tellg();
long size = end - beg;

char* buffer = new char[size];

// now read the file into buffer
file.seekg(0, ios::beg);
file.read(buffer, size);
file.close();

return buffer;
}

所以我的问题是如何从缓冲区中获取数据单元?

最佳答案

我不会为您编写代码,但请考虑一下...

buffer[0] 是您的第一个字符。从 buffer[1]buffer[4] 是您的第一个整数。它重复,所以 buffer[5] 是第二组数据的字符。

character和int一共有五个字节。如果您知道已读取的数据量,则可以将其除以 5 并知道有多少“组”数据。

您现在可以使用类似 for 循环的东西从零迭代到集合数减一。假设这个迭代器变量是 i,那么您可以使用 buffer[i * 5] 访问每个“数据集”的字符,即 int 的第一个字节buffer[i * 5 + 1]

因此,for 循环和一点数学知识将帮助您从该缓冲区中提取信息。你将有 5 个单独的字节,你需要将其中的 4 个字节重新组合成一个 int。有多种方法可以实现这一点,我会让您尝试发现。

关于c++ - 将整个二进制文件读入缓冲区,然后以特定格式解析它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52490082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com