另:char转int怎么转;

解决方案 »

  1.   

    补充:
    比如就是char[10]={1234567890}
    我想把它转成16进制12 34 56 78 90 怎么转
      

  2.   

    atoi()char BUF[10]="1234567890";
    int i1,i2,i3,i4,i5;
    sscanf(BUF,"%2X%2X%2X%2X%2X,&i1,&i2,&i3,&i4,&i5);
      

  3.   

    char 转int 有atoi
    你说的10进制往16进制的转换,我来看看,能否作一个给你,等下再回
      

  4.   

    void  changefrom10to16jinzhi(DWORD inputnumber  ,CString  returnstring)
    {
                      double inputnumber;
                      inputnumber=(DWORD)inputnumber;//只考虑整数的情况
    DWORD  inputnumberinteger;
    double   inputnumberdecimal;
    bool  decimalflag=false;
                    inputnumberinteger=(DWORD)inputnumber;//只考虑整数的情况
    inputnumberdecimal=inputnumber-inputnumberinteger;
    DWORD a=inputnumberinteger;
    int i=0;
    int temp[32];//32个够了
    char buffer[32];
    char bufferdecimal[5];//表示小数的缓冲区,保留5位
    for(i=0;inputnumberinteger / 16;i++)
    {
    int tempInteger;
    tempInteger=inputnumberinteger/16 ;//获得整数
    temp[i]=inputnumberinteger-16*tempInteger;
    inputnumberinteger=tempInteger ;//获得余数
    }
    temp[i]=inputnumberinteger % 16;
    for(int j=0;j<=i;j++)
    {
    if(temp[j]<10)
     itoa(temp[j],buffer+j,5);
    if(temp[j]==10)
    buffer[j]='a';
    if(temp[j]==11)
    buffer[j]='b';
    if(temp[j]==12)
    buffer[j]='c';
    if(temp[j]==13)
    buffer[j]='d';
    if(temp[j]==14)
    buffer[j]='e';
    if(temp[j]==15)
    buffer[j]='f';
    }
    if(inputnumberdecimal > 0.00001)
    {
    decimalflag=true;
    for(i=1;i<=5;i++)
    {
    temp[i]=(int)(inputnumberdecimal*16) ;
    TRACE("%d,inputdecimal =%f\n",temp[i],inputnumberdecimal);
    inputnumberdecimal=inputnumberdecimal *16 -temp[i];
    }
            for(int j=1;j<=5;j++)
    {
    if(temp[j]<10)
    itoa(temp[j],bufferdecimal+j,5);
    if(temp[j]==10)
    bufferdecimal[j]='a';
    if(temp[j]==11)
    bufferdecimal[j]='b';
    if(temp[j]==12)
    bufferdecimal[j]='c';
    if(temp[j]==13)
    bufferdecimal[j]='d';
    if(temp[j]==14)
    bufferdecimal[j]='e';
    if(temp[j]==15)
    bufferdecimal[j]='f';
    }
    bufferdecimal[0]='.' ;
    } CString returnstring;
    if(!decimalflag)
    returnstring = "0x" +CString(buffer);
    else
    {
    returnstring="0x"+ CString(buffer);
        returnstring +=CString(bufferdecimal);
    }

    MessageBox(returnstring);
    }
    我测试了一下,呵呵,写的比较仓促,希望能有所帮助
      

  5.   

    //输入double 输出returnstring;
    void  changefrom10to16jinzhi(double inputnumberIn  ,CString  returnstring)
    {
            double inputnumber;
            inputnumber=(DWORD)inputnumberIn;//
    DWORD  inputnumberinteger;
    double   inputnumberdecimal;
    bool  decimalflag=false;
                    inputnumberinteger=(DWORD)inputnumber;//只考虑整数的情况
    inputnumberdecimal=inputnumber-inputnumberinteger;
    DWORD a=inputnumberinteger;
    int i=0;
    int temp[32];//32个够了
    char buffer[32];
    char bufferdecimal[5];//表示小数的缓冲区,保留5位
    for(i=0;inputnumberinteger / 16;i++)
    {
    int tempInteger;
    tempInteger=inputnumberinteger/16 ;//获得整数
    temp[i]=inputnumberinteger-16*tempInteger;
    inputnumberinteger=tempInteger ;//获得余数
    }
    temp[i]=inputnumberinteger % 16;
    for(int j=0;j<=i;j++)
    {
    if(temp[j]<10)
     itoa(temp[j],buffer+j,5);
    if(temp[j]==10)
    buffer[j]='a';
    if(temp[j]==11)
    buffer[j]='b';
    if(temp[j]==12)
    buffer[j]='c';
    if(temp[j]==13)
    buffer[j]='d';
    if(temp[j]==14)
    buffer[j]='e';
    if(temp[j]==15)
    buffer[j]='f';
    }
    if(inputnumberdecimal > 0.00001)
    {
    decimalflag=true;
    for(i=1;i<=5;i++)
       {
    temp[i]=(int)(inputnumberdecimal*16) ;
    inputnumberdecimal=inputnumberdecimal *16 -temp[i];
    }
            for(int j=1;j<=5;j++)
    {
    if(temp[j]<10)
    itoa(temp[j],bufferdecimal+j,5);
    if(temp[j]==10)
    bufferdecimal[j]='a';
    if(temp[j]==11)
    bufferdecimal[j]='b';
    if(temp[j]==12)
    bufferdecimal[j]='c';
    if(temp[j]==13)
    bufferdecimal[j]='d';
    if(temp[j]==14)
    bufferdecimal[j]='e';
    if(temp[j]==15)
    bufferdecimal[j]='f';
    }
    bufferdecimal[0]='.' ;
    } CString returnstring;
    if(!decimalflag)
    returnstring = "0x" +CString(buffer);
    else
    {
    returnstring="0x"+ CString(buffer);
        returnstring +=CString(bufferdecimal);
    }

    MessageBox(returnstring);
      

  6.   

    整数转16进制字符串可以这样:
    int i = ……;
    char s[32];
    sprintf(s , "%X" , i);
      

  7.   

    同意steedhorse(晨星) ,你要答案時 %d 代表10進制,%o代表8進制,%X代表16進制
      

  8.   

    atoi实现字符到数字的转换
    10到16进制的转换:
    你为什么要做这种转换呢?如果仅仅为了输出16进制,printf("%X",i)就可以了