加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:04:56 所属栏目:百科 来源:网络整理
导读:我正在尝试从二进制文件中读取无符号长号. 我是这样做的: 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_castunsigned lon
我正在尝试从二进制文件中读取无符号长号.
我是这样做的:

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,然后取消引用它.关键是取消引用适当类型的指针.指针类型决定了值的使用字节数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读