所以基本上我正在使用文件阅读器,二进制文件被加载到包含文件中所有字节的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*
存储智能指针是好的做法,而不是像在存储器中存储原始指针和删除已分配的数组。