说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何把16进制数方式写入文件?

编辑:说三道四文库 发布时间:2018-06-22 11:53
HTML文档下载 WORD文档下载 PDF文档下载
利用CFile类,
如何把16进制数写入文件?
如何从文件读出16进制数到变量?
并能自己指定字节数。
wsprinf函数,先转换为字符串,然后写字符串不就可了吗?
读的时候?你要指定格式写才能读出来正确的。比如写的时候用个分隔符合
可以举个例子吗?
比如,我想在文件第10个字节处写入0x0010(且要占四个字节);然后再读到一个整型变量。
谢谢!
我写文件都是用streammode,我才不管是几进制呢
FILE* file;
int numWrite,numRead;
file=fopen("file.dat","w");
fprintf(file,"%X",numWrite);
fclose(file);

file=fopen("file.dat","r");
fscanf(file,"%X",&numRead);
fclose(file);
文件打开用字符方式,读写文件跟从键盘读,从屏幕写没什么两样的
.......
    char buf[nBytes];
    //  .......

    CFile MyFile1("file.dat",CFile::modeRead | CFile::typeBinary);

    buf[0]=0x10;
    buf[1]=0;          // 按照你的需要,向 buf 添加数据
    buf[2]=0;
    buf[3]=0;
    MyFile1.Seek( 10, CFile::begin);   // 请参看 MSDN

    MyFile2.Write(buf,2); // 写入需要的字节数


    // 另一种方法

    char int i=0x0010;
    CFile MyFile1("file.dat",CFile::modeRead | CFile::typeBinary);

    MyFile1.Seek(10, CFile::begin);   // 请参看 MSDN
    MyFile2.Write((void *)&i,4);      // 写入

    MyFile1.Seek(10, CFile::begin);
    MyFile1.Read((void *)&i,4);       // Read
文件打开模式可能有问题,请自己看 MSDN,使用正确的模式.
为什么不结合CArchive一起使用<<和>>呢?
把握今生  说的方法我认为是比较简洁的方法。  

-----------------------------
小辉 http://www.ChinaITHero.com
设为二进制模式,根据字节数读写.
BOOL LoadTableDefine(struct TableDefineFile *ptd)
{
CFile file;
char str[256];
int i;

GetModuleFileName(NULL,str,256);
i=strlen(str);
while('\\'!=str[i])
{
str[i--]='\0';
}
memcpy(str+i+1,TABLEDEFINEFILE,strlen(TABLEDEFINEFILE)+1);
if(0!=file.Open(str,CFile::modeRead|CFile::typeBinary))
{
i=file.Read(ptd,sizeof(struct TableDefineFile));
file.Close();
if(sizeof(struct TableDefineFile)!=i
|| TABLE_EDITION!=ptd->edition)
{
memset(ptd,0,sizeof(struct TableDefineFile));
return FALSE;
}
return TRUE;
}

return FALSE;
}
此函数在程序所在目录下读一个文件,文件名是预定义的.文件包含一个结构,结构里包含一个版本号.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘