百分百结贴率,请教!!!
10 个解决方案
#1
读进来就是数据,至于是什么进制在于你的意念。
#2
实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!
#3
你还是没理解1楼的话。
#4
fopen的时候rb方式二进制方式读取,然后显示的0x来显示16进制,写数据就是wb
#5
不知道你这二进制到十六进制是什么样的概念。你是每个字节取二进制值,然后求十六进制,然后再写回文件么?
而且你转换二进制到十六进制是怎么存法?例如:00010001转换成十六进制是11,你是让这个11占一个字节还是两个字节。
而且你转换二进制到十六进制是怎么存法?例如:00010001转换成十六进制是11,你是让这个11占一个字节还是两个字节。
#6
求出十六进制后,修改部分值,然后在写回源文件去,不知道我说明白了没有。
其实我是要实现以十六进制修改一个DLL文件的内容。
#7
请教怎么实现 =》 然后显示的0x来显示16进制,用什么方法修改内容啊? 给个方法吧!!!
#8
同意
#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();
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
实在是不知道怎么把数据格式化转成十六进制的,也不知道怎么去写回文件,求个方法!
#3
你还是没理解1楼的话。
#4
fopen的时候rb方式二进制方式读取,然后显示的0x来显示16进制,写数据就是wb
#5
不知道你这二进制到十六进制是什么样的概念。你是每个字节取二进制值,然后求十六进制,然后再写回文件么?
而且你转换二进制到十六进制是怎么存法?例如:00010001转换成十六进制是11,你是让这个11占一个字节还是两个字节。
而且你转换二进制到十六进制是怎么存法?例如:00010001转换成十六进制是11,你是让这个11占一个字节还是两个字节。
#6
求出十六进制后,修改部分值,然后在写回源文件去,不知道我说明白了没有。
其实我是要实现以十六进制修改一个DLL文件的内容。
#7
请教怎么实现 =》 然后显示的0x来显示16进制,用什么方法修改内容啊? 给个方法吧!!!
#8
同意
#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();
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
寂寞贴 来个人关心一下啊~~~