我是这样做的:
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?
您可以在没有中间缓冲区的情况下读取数据:
infile.read(reinterpret_cast< char *>(& out),sizeof out);
不同之处在于,您在这里重新解释指针,而不是其下的值.
如果您仍想使用缓冲区,则应该是* reinterpret_cast< unsigned long *>(U);,这也会重新解释指针1st,然后取消引用它.关键是取消引用适当类型的指针.指针类型决定了值的使用字节数.
总结以上是内存溢出为你收集整理的c – 从二进制文件中读取unsigned long全部内容,希望文章能够帮你解决c – 从二进制文件中读取unsigned long所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)