求一段二进制读写操作文件的代码。百分百结贴率,请教!!!

时间:2021-05-05 19:13:42
想做一个小程序,就是可以二进制打开文件,并修改16进制的数值后,再以二进制保存文件。

百分百结贴率,请教!!!

10 个解决方案

#1


读进来就是数据,至于是什么进制在于你的意念。

#2


引用 1 楼 jcily 的回复:
读进来就是数据,至于是什么进制在于你的意念。

实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!

#3


你还是没理解1楼的话。

#4


引用 2 楼 chenmd1976 的回复:
引用 1 楼 jcily 的回复:
读进来就是数据,至于是什么进制在于你的意念。

实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!

fopen的时候rb方式二进制方式读取,然后显示的0x来显示16进制,写数据就是wb

#5


不知道你这二进制到十六进制是什么样的概念。你是每个字节取二进制值,然后求十六进制,然后再写回文件么?
而且你转换二进制到十六进制是怎么存法?例如:00010001转换成十六进制是11,你是让这个11占一个字节还是两个字节。

#6


引用 5 楼 cj1205 的回复:
不知道你这二进制到十六进制是什么样的概念。你是每个字节取二进制值,然后求十六进制,然后再写回文件么?
而且你转换二进制到十六进制是怎么存法?例如:00010001转换成十六进制是11,你是让这个11占一个字节还是两个字节。


求出十六进制后,修改部分值,然后在写回源文件去,不知道我说明白了没有。 
其实我是要实现以十六进制修改一个DLL文件的内容。

#7


引用 4 楼 oyljerry 的回复:
引用 2 楼 chenmd1976 的回复:
引用 1 楼 jcily 的回复:
读进来就是数据,至于是什么进制在于你的意念。

实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!

fopen的时候rb方式二进制方式读取,然后显示的0x来显示16进制,写数据就是wb


请教怎么实现 =》 然后显示的0x来显示16进制,用什么方法修改内容啊? 给个方法吧!!!

#8


引用 4 楼 oyljerry 的回复:
引用 2 楼 chenmd1976 的回复:
引用 1 楼 jcily 的回复:
读进来就是数据,至于是什么进制在于你的意念。

实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!

fopen的时候rb方式二进制方式读取,然后显示的0x来显示16进制,写数据就是wb

同意

#9


貌似死循环了,请帮我看看那里问题啊???

CFile fileTest;
char* pFileName = "Utility.dll";
TRY
{
fileTest.Open(pFileName, CFile::modeReadWrite | CFile::typeBinary);
MessageBox("打开文件成功!");
}
CATCH_ALL(e)
{
MessageBox("打开文件错误!");
}
END_CATCH_ALL

char *pBuf;
 
DWORD dwFileLen;
 
dwFileLen=fileTest.GetLength();
 
pBuf=new char[dwFileLen];
 
 
fileTest.SeekToBegin();

fileTest.Read(pBuf,dwFileLen);

CString sResult; 
for(int i=0; i < dwFileLen; i++)

if(i==2)
{
AfxMessageBox("d");
}
if(i==100)
{
AfxMessageBox("e");
}
CString s=""; 
s.Format("%2.2X",pBuf[i]);//后面加个空格,把每个字节分开,可以看得清楚些 
sResult+=s; //sResult就是要的16进制字符串了
}
AfxMessageBox(sResult);
 

fileTest.Close();

#10


寂寞贴 来个人关心一下啊~~~

#1


读进来就是数据,至于是什么进制在于你的意念。

#2


引用 1 楼 jcily 的回复:
读进来就是数据,至于是什么进制在于你的意念。

实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!

#3


你还是没理解1楼的话。

#4


引用 2 楼 chenmd1976 的回复:
引用 1 楼 jcily 的回复:
读进来就是数据,至于是什么进制在于你的意念。

实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!

fopen的时候rb方式二进制方式读取,然后显示的0x来显示16进制,写数据就是wb

#5


不知道你这二进制到十六进制是什么样的概念。你是每个字节取二进制值,然后求十六进制,然后再写回文件么?
而且你转换二进制到十六进制是怎么存法?例如:00010001转换成十六进制是11,你是让这个11占一个字节还是两个字节。

#6


引用 5 楼 cj1205 的回复:
不知道你这二进制到十六进制是什么样的概念。你是每个字节取二进制值,然后求十六进制,然后再写回文件么?
而且你转换二进制到十六进制是怎么存法?例如:00010001转换成十六进制是11,你是让这个11占一个字节还是两个字节。


求出十六进制后,修改部分值,然后在写回源文件去,不知道我说明白了没有。 
其实我是要实现以十六进制修改一个DLL文件的内容。

#7


引用 4 楼 oyljerry 的回复:
引用 2 楼 chenmd1976 的回复:
引用 1 楼 jcily 的回复:
读进来就是数据,至于是什么进制在于你的意念。

实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!

fopen的时候rb方式二进制方式读取,然后显示的0x来显示16进制,写数据就是wb


请教怎么实现 =》 然后显示的0x来显示16进制,用什么方法修改内容啊? 给个方法吧!!!

#8


引用 4 楼 oyljerry 的回复:
引用 2 楼 chenmd1976 的回复:
引用 1 楼 jcily 的回复:
读进来就是数据,至于是什么进制在于你的意念。

实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!

fopen的时候rb方式二进制方式读取,然后显示的0x来显示16进制,写数据就是wb

同意

#9


貌似死循环了,请帮我看看那里问题啊???

CFile fileTest;
char* pFileName = "Utility.dll";
TRY
{
fileTest.Open(pFileName, CFile::modeReadWrite | CFile::typeBinary);
MessageBox("打开文件成功!");
}
CATCH_ALL(e)
{
MessageBox("打开文件错误!");
}
END_CATCH_ALL

char *pBuf;
 
DWORD dwFileLen;
 
dwFileLen=fileTest.GetLength();
 
pBuf=new char[dwFileLen];
 
 
fileTest.SeekToBegin();

fileTest.Read(pBuf,dwFileLen);

CString sResult; 
for(int i=0; i < dwFileLen; i++)

if(i==2)
{
AfxMessageBox("d");
}
if(i==100)
{
AfxMessageBox("e");
}
CString s=""; 
s.Format("%2.2X",pBuf[i]);//后面加个空格,把每个字节分开,可以看得清楚些 
sResult+=s; //sResult就是要的16进制字符串了
}
AfxMessageBox(sResult);
 

fileTest.Close();

#10


寂寞贴 来个人关心一下啊~~~