我要把一个16进制转换成相应的字符,如下:
char bbuf = (char) 0x4c;没问题,但怎么把一个字符串型的转过来呢,如下:int a = atoi("0x4c");  //这个不行
char bbuf = (char) a;不行,应该怎么改呢?

解决方案 »

  1.   

    int a = atoi("0x4c");  
    atoi是把字符串转为整形,你这样会得到什么?a=0?可以用CString.GetBuffer得到字符串里的字符
      

  2.   

    是呀,我不知道16进制的应该怎么转。
    我的程序是SDK的,用不了CString。
      

  3.   

    int a=1;
    sscanf("0x10","0x%x",&a);
      

  4.   

    而且我的程序一用sscanf(final,"%x",&a);就会出错。
      

  5.   

    自己写个转换函数int StrToHex(char *buf)
    {
      int iResult=0;
      char bChar;
      int iValue;  if(!buf)
        return -1;
      int len=strlen(buf);
      for(int i=0;i<len;i++)
      {
        iResult*=16;
        bChar=buf[i];
        if((bChar>='0') && (bChar<='9'))
        {
          iValue=bChar-'0';
        }
        else if((bChar>='A') && (bChar<='F'))
        {
          iValue=bChar-'A'+10;
        }
        else if((bChar>='a') && (bChar<='f'))
        {
          iValue=bChar-'a'+10;
        }
        else
          break;
        iResult=iResult+iLow;
      }
      return iResult;
    }
      
      

  6.   

    unsigned long strtoul( const char *nptr, char **endptr, int base );
    base换成0x10就行
      

  7.   

    long strtol( const char *nptr, char **endptr, int base );