求助十六进制数据写文件的问题
用unsigned char* data指向接收到的十六进制命令数据,比如AB CD 11 01 10,想保存在一个txt里文档里,直接写:
DWORD dwrite=0;
WriteFile(fHandle,data,len,&dwrite,NULL);
因为接收到的命令为十六进制数据,写完之后打开文本为一堆乱码,其实这个无关紧要,只要我再提取数据的时候读出来正确就行了。读的代码为
DWORD filesize=GetFileSize(fHandle,NULL);
char* buffer=new char[filesize+1];
DWORD readsize;
ReadFile(fHandle,buffer,filesize,&readsize,NULL);
buffer[filesize]=0;
但是读出来的数据确实为十六进制命令,但是和输入的不一样,结果不正确,请问是什么原因呢?求大神解答,正确的该怎么写
[解决办法]
unsigned char* data={0xAB,0xCD,0x11,0x01,0x10};
DWORD dwrite=0;
DWORD len=5;
WriteFile(fHandle,data,len,&dwrite,NULL);
CloseHandle(fHandle);
fHandle=CreateFile(...);
DWORD filesize=GetFileSize(fHandle,NULL);
char* buffer=new char[filesize];
DWORD readsize;
ReadFile(fHandle,buffer,filesize,&readsize,NULL);
char s[80];
s[0]=0;
for (int i=0;i<filesize;i++) sprintf(s,"%s%02X ",s,(unsigned char)buffer[i]);
printf("s=[%s]\n",s);
或
unsigned char* data={"AB CD 11 01 10"};
DWORD dwrite=0;
DWORD len=15;
WriteFile(fHandle,data,len,&dwrite,NULL);
CloseHandle(fHandle);
fHandle=CreateFile(...);
DWORD filesize=GetFileSize(fHandle,NULL);
char* buffer=new char[filesize];
DWORD readsize;
ReadFile(fHandle,buffer,filesize,&readsize,NULL);
printf("buffer=[%s]\n",buffer);
试试看。
[解决办法]
确认一下文件指针读写的时候是否一致,不确定的话,可以Seek到相同的位置。
[解决办法]
句柄没关闭过的话,在读取之前必须设置读取位置到开头
SetFilePointer( fHandle, 0, NULL, FILE_BEGIN);
[解决办法]
WinAPI不管编码,你写入的buf什么二进制,文件里面就什么二进制