#include<iostream>
#include <fstream>
using namespace std;
int main()
{
int x;
ifstream in("G:\\in.txt",ios::binary);
if(!in)
{
cout<<"Error open file1.";
return 0;
}
in.read((char *)&x,sizeof(x));
cout<<x;
return 0;
}
in.dat 的内容是000000000 00000000 00000000 00000001
在线等 求大神啊
0001也不行 你说的不太懂~~~我应该怎么做??
追答我错了,你读到的是字符0001组合出的整数值,具体为0x30 0x30 0x30 0x31 组合的值;
具体是多少要看他们是如何组合的了808464433也许是你读取的吧。
1、你需要把数字整形1写到文件中。
int _iValue=1;
fwrite(f,(char*)&_iValue,4);
2、你之前写的 000000000 00000000 00000000 00000001是字符吧
你相当于这样写
int _i0value = 48;//你看到的字符0,在内存中的二进制用整形表示值为48
int _i1Value = 49;//二进制是最实在的东西,你以不同的显示方式,看到效果也一样
fwrite(f,(char*)&_i0Value,1);
fwrite(f,(char*)&_i0Value,1);
............
fwrite(f,(char*)&_i1Value,1);
3、你想实现你的效果,你必须保证你读取到的数据的二进制到底是啥。
是实实在在的内存中的值。二进制110001你要以Assi码显示是1,以整形显示49,
以char的形式显示也是1.
可是我改过之后还是不对,,输出不是1,,输出了808464432~~~~~~为什么??大神!!
追答你在文件里输入的不会是字符0001吧!!字符'0'的值是0x30,即十进制48,可不是0啊。你用这个十六进制查看器打开文件就明白了。