如把字符串“zheshi汉字”转换为
7A 68 65 73 68 69 BA BA D7 D6我用
CString AA,BB="zheshi汉字";
AA.Format("%02X ",BB)
结果转换出来是7A 68 65 73 68 69 FFFFFFBA FFFFFFBA FFFFFFD7 FFFFFFD6 
如何把那些多余的FFFFFF去掉?
还有转换出来的16进制是不是最好不要存为CString?
多谢

解决方案 »

  1.   

    char ConvertHex(char ch)
    {
      if((ch>='0')&&(ch<='9'))
      return ch - 0x30;
      else if((ch>='A')&&(ch<='F'))
      return ch - 'A' + 10;
      else if((ch>='a')&&(ch<='e'))
      return ch - 'a' + 10;
      else return (-1);
    }
    int StringToHex(CString str,CByteArray &m_baData)
    {
       int hexData,lowhexData;
       int hexLen = 0;
       int len = str.GetLength();
       m_baData.SetSize(len/2);
       for(int i=0;i<len)
       {
         char lstr,hstr = str[i];//获得地址的高8位和低8位
         if(hstr =='')
         {
           i++;
           continue;
         }
         i++;
         if(i>=len)
         break;
         lstr = str[i];
         hexData = ConvertHex(lstr);
         if((hexData ==16)||(lowhexData ==16))
         break;
         else
         hexData = hexData*16 + lowhexData;
         i++;
         m_baData[hexLen]=(char)hexData;
         hexLen++;
       }
       m_baData.SetSize(hexLen);
       return hexLen;
    }
      

  2.   

    试试我做的吧,代码贴出来给你看看char ConvertHexChar(int ivlue) 
    {
    char szText[2];
    memset(szText,0,2);
    sprintf(szText,"%x",ivlue);
    return szText[0];
    }bool ConvertHexString(char *pszBuffer,LPCSTR pszSource,int nlen)
    {
    if (NULL== pszSource|| NULL==pszBuffer || 0==nlen)
    return false;

    if (pszBuffer==pszSource)  //自己拷贝自己
    return false;

    UCHAR  c;
    int j=0;
    for (int i=0;i<nlen;i++)
    {
    c=pszSource[i];
    pszBuffer[j++]= ConvertHexChar(int(c/16));  //第一位
    pszBuffer[j++]= ConvertHexChar(c%16);  //第二位
    }
    pszBuffer[j]='\0'; return true;
    }void CTestDlg::OnButton2() 
    {
    char szSoure[100];
    char szTarget[100];
    memset(szSoure,0,100);
    memset(szTarget,0,100);

    strcpy(szSoure,"this我是谁?ABC1234是00");
    ConvertHexString(szTarget,szSoure,strlen(szSoure)); AfxMessageBox(szTarget);
    }
      

  3.   

    第一个函数还可以这样:
    char ConvertHexChar(int ivlue) 
    {
    char szText[]="0123456789ABCDEF";
    return szText[ivlue];
    }