如题.谢谢.

解决方案 »

  1.   

    字符串转为字符串?
    十六进制字串转为值:
    long strtol( const char *nptr, char **endptr, int base ); 其中base=16
    值转为十六进制字串
    char *_itoa( int value, char *string, int radix );其中radix=16

    sprintf(buff,"%x",val);
      

  2.   

    如果是我说的把十六进制字串转换为对应的十进制字符串.那么如下进行是很方便的!
    CString str16("FF");
    char chs10[128];
    int iData;
    sscanf(str16.GetBuffer(m_1.GetLength()),"%x",&iData);
    sprintf(chs10,"%d",iData);
      

  3.   

    CString CADOWriteDlg::HexToStr(CString str)//输入参数为一个字符的2个16进制代码,如"D3"
    {
    ASSERT(2==str.GetLength());
    unsigned char ch[2];
    unsigned char retval;
    strcpy((char*)ch,str);
    if(ch[0]>='0'&&ch[0]<='9')
    retval=(ch[0]-'0')*16;
    else if(ch[0]>='A'&&ch[0]<='F')
    retval=(ch[0]-'A'+10)*16; if(ch[1]>='0'&&ch[1]<='9')
    retval+=ch[1]-'0';
    else if(ch[1]>='A'&&ch[1]<='F')
    retval+=ch[1]-'A'+10;
    char tempch[10];
    itoa(retval,tempch,10);

    CString retstr;
    retstr.Format("%c",retval);
    return retstr;
    }
      

  4.   

    比如我要输入的十六进制串为"B8F1B6FBC4BE0000"
    则输出"格尔木", 如何做到.
      

  5.   

    给你一个指引,通过类似的方法可以解决你的问题 CString str16("B8F1B6FBC4BE");
    char chs10[128];int iData1,iData2,iData3,iData4,iData5,iData6;sscanf(str16.GetBuffer(m_1.GetLength()),"%2x%2x%2x%2x%2x%2x",&iData1,&iData2,&iData3,&iData4,&iData5,&iData6);sprintf(chs10,"%c%c%c%c%c%c",iData1,iData2,iData3,iData4,iData5,iData6);
      

  6.   

    你这种情况调用库函数不明智,主要是速度
    帮你写个吧,按我看来已经不能再快了
    用法
    char s[]="B8F1B6FBC4BE0000";
    int i=MyHex(s);
    MessageBox(0,s,0,MB_OK);
    试试吧int MyHex(char* s)
    {
    byte a,b;
    int i;
    char* p=s;
    for(i=0;*s!=0;i++)
    {
    a=*s;
    if(a>0x29 && a<0x3A)//'0'-'9'
    a-=0x30;
    else if(a>0x40 && a<0x47)//'A'-'F'
    a-=0x37;
    else if(a>0x60 && a<0x67)//'a'-'f'
    a-=0x57;
    else //error
    break;
    s++;
    b=*s;
    if(b>0x29 && b<0x3A)//'0'-'9'
    b-=0x30;
    else if(b>0x40 && b<0x47)//'A'-'F'
    b-=0x37;
    else if(b>0x60 && b<0x67)//'a'-'f'
    b-=0x57;
    else //error
    break;
    p[i]=(a<<4) | b;
    s++;
    }
    p[i]=0;
    return i;
    }
      

  7.   

    char s[]="B8F1B6FBC4BE0000";
    char r[MAX_LEN]={0};
    for(int i=0;i<strlen(s);i+=2)
    sscanf(s+i,"%2X",r+i/2);
      

  8.   

    int n ;
    sscanf( input, "%x", &n ) ;
    sprintf( output, "%d", n ) ;
      

  9.   

    To vcmute(横秋):
    如果字串超长,在转换前后用GetTickCount()记一下时间,就知道sscanf之类的格式化字串函数有多么慢了;