c – 从二进制文件中读取unsigned long

c – 从二进制文件中读取unsigned long,第1张

概述我正在尝试从二进制文件读取无符号长号. 我是这样做的: 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)); 我正在尝试从二进制文件中读取无符号长号.
我是这样做的:

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?

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

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

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

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

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

总结

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

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1217548.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存