我有一个文件如下:
Offset Type Value [meaning]
0000 32 bit integer 60000 count of data
0004 32 bit integer 32 width
0008 32 bit integer 32 height
0012 byte 1 data; ext.
我通过快速将文件内容转储到字符串来读取数据。
由于文件的大小,数据的性质以及其使用的id如何试图避免在整个地方复制它。
所以我希望使用指向数据的指针,以节省时间,但我不能让它们正常工作。
我喜欢这样做:
std::string mydata;
dumpdata("myfile.bin",mydata); //dumps data to reference string.
uint32_t* count = (uint32_t*)&mydata[4]; //32 bit integer.
我知道我忘记演员或其他什么,但我无法弄清楚它是什么。 我尝试的并没有奏效。
说清楚。我不想复制。我只想要指望那个区域并将其视为uint32_t,即使它是一个字节数组。
这可能是一个非常简单的问题,但其中一个"谷歌认为我试图转换ascii"事情,我不是。
我希望如果数据是:00002710H我会得到uint 10000.相反我得到270,991,360
答案 0 :(得分:0)
我只想指望那个区域并将其视为uint32_t,即使它是一个字节数组。
这在标准C ++中是不可能的(在这个问题上也不是C)。
如果您的目的是阅读数据,那么可以写一个解决方案:
uint32_t get_count(std::string const& mydata)
{
uint32_t x;
std::memcpy(&x, &mydata[4], 4);
return x;
}