gpt4 book ai didi

c++ - 一次通过 ULONG 读取文件

转载 作者:太空宇宙 更新时间:2023-11-04 07:54:17 24 4
gpt4 key购买 nike

我正在尝试适应某些代码,这些代码会在某些数据的头部创建一个 char *。然后能够一次递增该指针 unsigned long 以读取数据。

有人告诉我执行此操作的一个好方法是使用 ifstream 将文件(位于 C:/上的某处)读入 vector :

std::vector<int8_t>

但我的困惑在于,我该如何将文件的每一部分都以 ULONG 的大小提取出来。我在下面发布了逻辑,这是与需要该大小数据的硬件进行通信,因此他们一次遍历 sizeOf(ULONG) 处的指针,直到他们读取文件末尾(他们通过检查文件知道这一点尺寸)。我知道我需要以某种方式将其加载到内存中..但我如何以相同的方式遍历

他们的一小段代码如下所示:

char* resData;
res = FindResource(NULL, MAKEINTRESOURCE(fpgaDevice), L"FPGADATA");
resHandle = LoadResource(NULL, res);
resData = (char*)LockResource(resHandle);

然后为了推进文件,他们将指针推进 ULONG 的大小:

resData += sizeof(ULONG);

要读取指针,只需使用:

(ULONG*)resData

最佳答案

我假设您的数据是采用正确 native 格式的二进制数据(我认为您的问题暗示了这一点)。

因此,如果您的数据是 ULONG,请不要使用字符指针,而是使用 ULONG 指针,就像这样

vector<int8_t> res;
// some code to read into res

// get the underlying data
ULONG* resData = (ULONG*)res.data();

// read a ULONG
ULONG someData = *resData;

// advance to the next ULONG
++resData;

重要的部分是使用 data() 方法访问 vector 数据。

关于c++ - 一次通过 ULONG 读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51405370/

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