已知:
CString strTemp;
通过UpdateDate()与程序中的一Edit框相关联。
问题:
想要使Edit框中的以十六进制输入的String,变成“真正的”十六进制的String
举个例子:
Input:"40 41 42 43"

Output:strTemp="\x40\x41\x42\x43"
即strTemp = "ABCD"不知道大家理解了没?
谢了。

解决方案 »

  1.   

    呵呵,明白了
    其实你只需要做一下字符串的转换就可以了
    Input:"40 41 42 43"
    UpdateDate()后,strTemp = "40 41 42 43"
    你现在只需要完成strTemp 到strOut="\x40\x41\x42\x43"的转换。
    实现起来应该不难吧
      

  2.   

    sscanf(str,"%d %d %d %d",&a,&b,&c,&d);
    sprintf(str,"%x%x%x%x",a,b,c,d);
    d大概意思
      

  3.   

    sscanf(str,"%d %d %d %d",&a,&b,&c,&d);
    sprintf(str,"%c%c%c%c",a,b,c,d);
    大概意思
      

  4.   

    CString HexStringToChar(CString cs)
    {
    CString ret;
    cs.Replace(" ","\\x");
    ret = "\\x" + cs;

    return ret;
    }
    这样的转换之后,strOut="\x40\x41\x42\x43"。
    但是不等于      strOut="ABCD"。
    strOut还是等于"\x40\x41\x42\x43",没有转换。
      

  5.   

    CString Temp,Output,Input="40 41 42 43";
    int iValue,iPos,iStart = 0;
    while(iPos = Input.Find(" ",iStart)+1)
    {
    Temp  = "0x";
    sscanf(Temp+Input.Mid(iStart,iPos-iStart-1),"%x",&iValue);
    Temp.Format("%c",iValue);
    Output += Temp;
    iStart = iPos;
    }
    Temp  = "0x";
    sscanf(Temp+Input.Mid(iStart),"%x",&iValue);
    Temp.Format("%c",iValue);
    Output += Temp;
      

  6.   

    CString strTemp;
    char Input[]="40 41 42 43";
    char seps[]   = " ,\t\n";
    char*  token = strtok( Input, seps );
    int iAscii;
    while( token != NULL )
    {
      sscanf(token ,"%x", &iAscii);
      strTemp += iAscii;
      token = strtok( NULL, seps );
    }