C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 从二进制文件中读取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?

@L_607_5@

是因为你正在施放一个解除引用的值.即只有一个char不满4个字节. * U是106.

您可以在没有中间缓冲区的情况下读取数据:

infile.read(reinterpret_cast< char *>(& out),sizeof out);

不同之处在于,您在这里重新解释指针,而不是其下的值.

如果您仍想使用缓冲区,则应该是* reinterpret_cast< unsigned long *>(U);,这也会重新解释指针1st,然后取消引用它.关键是取消引用适当类型的指针.指针类型决定了值的使用字节数.

大佬总结

以上是大佬教程为你收集整理的c – 从二进制文件中读取unsigned long全部内容,希望文章能够帮你解决c – 从二进制文件中读取unsigned long所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。