如何从std :: unique_ptr <unsigned char [] =“”>中读取unsigned int?

时间:2016-02-13 02:00:17

标签: pointers c++11 smart-pointers unsigned-integer

所以基本上我正在使用文件阅读器,二进制文件被加载到包含文件中所有字节的std::unique_ptr<unsigned char[]>

我正在尝试从头开始读取unsigned int。通常,如果它只是一个原始指针(unsigned char*),它将如下所示:

unsigned int magic = *(reinterpret_cast<unsigned int*>(buffer));

但是,我目前正在尝试相同,其中缓冲区是智能指针。到目前为止,我已经想出了这个:

unsigned int magic = *(reinterpret_cast<unsigned int*>(classFile_.get()));

输出magic之后:

std::cout << std::hex << magic;

我得到1。我应该得到的地方:0xbebafeca(这是一个Java类文件阅读器,0xCAFEBABE是无符号整数魔术数字)。

关于它为什么不起作用的任何想法?我也不确定是否为unsigned char*存储智能指针是好的做法,而不是像在存储器中存储原始指针和删除已分配的数组。

0 个答案:

没有答案