raw 文件可以转成void* 吗
时间: 2023-08-02 16:08:50 浏览: 48
可以,但是需要注意一些细节。将一个 raw 文件转成 void*,可以使用如下代码:
```cpp
#include <fstream>
// 读取 raw 文件,返回指向数据的 void* 指针
void* read_raw_file(const char* filename, size_t size) {
std::ifstream file(filename, std::ios::binary | std::ios::ate);
if (file.fail()) {
return nullptr;
}
size_t file_size = static_cast<size_t>(file.tellg());
if (file_size != size) {
return nullptr;
}
void* data = new char[file_size];
file.seekg(0, std::ios::beg);
file.read(reinterpret_cast<char*>(data), file_size);
file.close();
return data;
}
```
这个函数首先打开指定的文件,检查文件大小是否与要求的大小相同,如果相同就读取数据到内存中,并返回指向数据的 void* 指针。需要注意的是,返回的 void* 指针指向的是动态分配的内存,需要在使用完毕后手动释放,以避免内存泄漏。
另外,需要注意的是,raw 文件中的数据可能不是按照字节对齐的,如果您需要将这些数据解释成其他类型(比如int、float等),需要注意数据的字节序(即大端序还是小端序)。