我正在从文件中读取二进制数据:
char* buffIn = new char[8];
ifstream inFile(path, ifstream::binary);
inFile.read(buffIn, 8);
Run Code Online (Sandbox Code Playgroud)
然后,我想将读取的char *(以二进制形式)转换为无符号长整数,但是我遇到了问题-我不太确定发生了什么,但是例如0x00000000000ACD被解释为0xFFFFFFFFFFFFCD-我怀疑所有0x00字节都是从char *转换为unsigned long时引起某种问题...
unsigned long number = *(buffIn);
Run Code Online (Sandbox Code Playgroud)
如何正确执行此操作?
因为buffIn是类型char指针,所以当您执行操作时,*(buffIn)您仅会抓取一个字符。您必须将内存地址重新解释为unsigned long指针,然后取消引用。
unsigned long number = *((unsigned long*)buffIn);
Run Code Online (Sandbox Code Playgroud)