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);
}

解决方案 »

  1.   

    网上转来的 学习下1.传给未分配内存的const char* (LPCTSTR)指针.
       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);