VC MFC 编程。想要实现用edit控件中获取字符串,把字符串转换为16进制,存进一个char str1[]数组里面。把这个数组的值分别赋值给szFlag[16]数组。该怎么实现呢? if (passLen == 8)//判读密码长度是否为8
{
char hexpass[]=""; for (int i=0;i<passLen; i++)
{
sResult.Format("%x ",password[i]);//转换为16进制,
sTemp+=sResult;
}
FILE *pFile;
if (pFile = fopen(m_openfile, "r+b"))//此处为要打补丁的目标文件
{
fseek(pFile, 0x15D30, SEEK_SET); // 定位文件偏移
char szFlag[16];
fread(szFlag, 1, 2, pFile); // 可以在此处读出要改写的地方,注意此句过后文件指针向后移了2个字节
fseek(pFile, -2, SEEK_CUR); // 将指针返回要改写的地方
szFlag[0] = (char)0x36; // 要替换的内容,
szFlag[1] = (char)0x00;
szFlag[2] = (char)0x36;
szFlag[3] = (char)0x00;
szFlag[4] = (char)0x36;
szFlag[5] = (char)0x00;
szFlag[6] = (char)0x36;
szFlag[7] = (char)0x00;
szFlag[8] = (char)0x36;
szFlag[9] = (char)0x00;
szFlag[10] = (char)0x36;
szFlag[11] = (char)0x00;
szFlag[12] = (char)0x36;
szFlag[13] = (char)0x00;
szFlag[14] = (char)0x36;
szFlag[15] = (char)0x00;
int nID = fwrite(szFlag, 1, 16, pFile); // 写入文件,成功则返回写入的字节个数
fclose(pFile);
MessageBox("密码修改完毕","友情提示:",MB_OK);
}
else
{
MessageBox("打开 boobsoft1.exe 文件时出错","提示:",MB_ICONERROR);
}
}
else//判读密码长度不等于8
{
MessageBox("你输入的密码长度应该为8位","错误提示:",MB_ICONERROR);
}
{
char hexpass[]=""; for (int i=0;i<passLen; i++)
{
sResult.Format("%x ",password[i]);//转换为16进制,
sTemp+=sResult;
}
FILE *pFile;
if (pFile = fopen(m_openfile, "r+b"))//此处为要打补丁的目标文件
{
fseek(pFile, 0x15D30, SEEK_SET); // 定位文件偏移
char szFlag[16];
fread(szFlag, 1, 2, pFile); // 可以在此处读出要改写的地方,注意此句过后文件指针向后移了2个字节
fseek(pFile, -2, SEEK_CUR); // 将指针返回要改写的地方
szFlag[0] = (char)0x36; // 要替换的内容,
szFlag[1] = (char)0x00;
szFlag[2] = (char)0x36;
szFlag[3] = (char)0x00;
szFlag[4] = (char)0x36;
szFlag[5] = (char)0x00;
szFlag[6] = (char)0x36;
szFlag[7] = (char)0x00;
szFlag[8] = (char)0x36;
szFlag[9] = (char)0x00;
szFlag[10] = (char)0x36;
szFlag[11] = (char)0x00;
szFlag[12] = (char)0x36;
szFlag[13] = (char)0x00;
szFlag[14] = (char)0x36;
szFlag[15] = (char)0x00;
int nID = fwrite(szFlag, 1, 16, pFile); // 写入文件,成功则返回写入的字节个数
fclose(pFile);
MessageBox("密码修改完毕","友情提示:",MB_OK);
}
else
{
MessageBox("打开 boobsoft1.exe 文件时出错","提示:",MB_ICONERROR);
}
}
else//判读密码长度不等于8
{
MessageBox("你输入的密码长度应该为8位","错误提示:",MB_ICONERROR);
}
CString cstr(asdd);
const char* ch = (LPCTSTR)cstr;
ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.2.传给未分配内存的指针.
CString cstr = "ASDDSD";
char *ch = cstr.GetBuffer(cstr1.GetLength() + 1);
cstr.ReleaseBuffer();
//修改ch指向的值等于修改cstr里面的值.
//PS:用完ch后,不用delete ch,因为这样会破坏cstr内部空间,容易造成程序崩溃.
3.第二种用法。把CString 值赋给已分配内存的char *。
CString cstr1 = "ASDDSD";
int strLength = cstr1.GetLength() + 1;
char *pValue = new char[strLength];
strncpy(pValue, cstr1, strLength);
4.第三种用法.把CString 值赋给已分配内存char[]数组.
CString cstr2 = "ASDDSD";
int strLength1 = cstr1.GetLength() + 1;
char chArray[100];
memset(chArray,0, sizeof(bool) * 100); //将数组的垃圾内容清空.
strncpy(chArray, cstr1, strLength1);