【发布时间】:2017-05-18 04:31:54
【问题描述】:
我正在尝试从二进制文件中读取 unsigned long 数字。
我是这样做的:
infile.open("file.bin", std::ios::in | std::ios::binary);
char* U=new char[sizeof(unsigned long)];
unsigned long out=0;
infile.read(U, sizeof(unsigned long));
out=static_cast<unsigned long>(*U);
delete[] U;
U=NULL;
infile.close();
但结果不正确。
我的数据是6A F2 6B 58 00 00 00 00,女巫应该读作1483469418,但在我的代码中是106,这只是数据的第一个字节
有什么问题?
我应该如何从文件中正确读取unsigned long?
【问题讨论】:
-
您期望什么字节序格式以及您使用什么格式?在处理多字节整数值时要注意这一点。
-
您只是将第一个字节转换为无符号长整数。此外,由于 endanness,该方法无论如何都不可移植。
-
@tadman:文件和系统都是 LE
-
@A.S.H:我怎样才能正确且无字节序地做到这一点?
标签: c++ binaryfiles readfile