【发布时间】:2018-12-26 13:43:15
【问题描述】:
我正在尝试适应一些代码,这些代码会在某些数据的头部创建一个 char *。然后能够一次递增该指针 unsigned long 以读取数据。
有人告诉我这样做的好方法是使用 ifstream 将文件(位于 C:/ 上的某处)读入向量:
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
【问题讨论】:
-
他们使用的是内存映射文件吗? en.wikipedia.org/wiki/Memory-mapped_file
-
int8_t可能不够大,因为ULONG可能是uint32_t。 -
你有问题。您标记了 C 语言,但 C 语言没有
std::vector。我建议您在混合或组合两种语言之前专注于一种语言。另外,更新您的语言标签。 -
读取数据到 int8_t 向量并使用指向向量缓冲区的指针读取 uint32_t 数据块的意义何在.... 为什么不直接将数据读取到向量uint32_t 并通过索引访问值?