首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

十六进制数据写文件的有关问题

2013-12-19 
求助十六进制数据写文件的问题用unsigned char* data指向接收到的十六进制命令数据,比如AB CD 11 01 10,想

求助十六进制数据写文件的问题
用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到相同的位置。

引用:
用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;

但是读出来的数据确实为十六进制命令,但是和输入的不一样,结果不正确,请问是什么原因呢?求大神解答,正确的该怎么写

[解决办法]
句柄没关闭过的话,在读取之前必须设置读取位置到开头
SetFilePointer( fHandle, 0, NULL, FILE_BEGIN);

[解决办法]
WinAPI不管编码,你写入的buf什么二进制,文件里面就什么二进制

热点排行