我正在尝试适应一些代码,这些代码在一些数据的头部创建一个char*。然后能够一次增加该指针的无符号长度来读取数据。
我被告知一个很好的方法是使用ifstream将文件(位于C:/)读入向量:
std::vector<int8_t>
但我的困惑是,我该如何把每一块文件都拉出乌龙大小。我发布了下面的逻辑,这是与需要该大小数据的硬件通信,因此它们一次遍历size of(ULONG)处的指针,直到读取文件的结尾(通过检查文件大小知道)。我知道我需要把它记在记忆里。。但我该怎么走同样的路
他们的一小段代码如下所示:
char* resData;
res = FindResource(NULL, MAKEINTRESOURCE(fpgaDevice), L"FPGADATA");
resHandle = LoadResource(NULL, res);
resData = (char*)LockResource(resHandle);
然后,为了使文件前进,他们将指针前进ULONG的大小:
resData += sizeof(ULONG);
要读取指针,只需使用:
(ULONG*)resData
最佳答案
我假设您的数据是正确的本地格式的二进制数据(我认为这是您的问题所暗示的)。
所以如果你的数据是ULONG,不要使用char指针,使用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()
方法访问矢量数据。