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(); 但结果不正确. 问题是什么? 解决方法
那是因为你正在施放一个解除引用的值.即只有一个char不满4个字节. * U是106.
您可以在没有中间缓冲区的情况下读取数据: infile.read(reinterpret_cast< char *>(& out),sizeof out); 不同之处在于,您在这里重新解释指针,而不是其下的值. 如果您仍想使用缓冲区,则应该是* reinterpret_cast< unsigned long *>(U);,这也会重新解释指针1st,然后取消引用它.关键是取消引用适当类型的指针.指针类型决定了值的使用字节数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |