unsigned char c[2];
int aa;
c[0]=0x10;
c[1]=0x10;如上例所示,有个2字节的16进制字符数组,如何把这个字符数组对应的数转换成对应的十进制数存入int型变量aa中。

解决方案 »

  1.   

    首先要注意字节序,如果按intel的习惯,应该是aa = c[ 1 ] * 256 + c[ 0 ];
      

  2.   

    int HexToTen(char old[])
    {
    int size = strlen(old);
    int num = 0;
    int sum = 0;
    for(int i = size - 1,j = 0; i >= 0 ; i--,j++)
    {
    if(old[i] >= 'A' && old[i] <= 'F')
    {
    num = old[i] - 'A' + 10;
    }
    else if (old[i] >= 'a' && old[i] <= 'f') 
    {
    num = old[i] - 'a' + 10;
    }
    else
    {
    num = old[i] - '0';
    }
    sum += num*pow(16,j);
    }
    return sum; 
    }
      

  3.   

    感觉应改为:c[0]=0x42; 
    c[1]=0x32; 
    c[2]=0;这样,直接输出字符串为:"B2"
    再转换成十进制数,就是:11*16 + 2 = 178
      

  4.   

    2个字节的话先转为short然后高低位调换,再放入intunsigned short a;
    memcpy(&a,c,2);int b=ntohs(a);
      

  5.   

    题目让人觉得有歧义...?
    unsigned char c[2]; 
    int aa; 
    c[0]=0x1; 
    c[1]=0x2; //不要写成相同的啊,两个0x10,谁知道你怎么摆放的
    根据
    这时你的aa=多少
    也许可以直接转换.
      

  6.   

    aa = c[1]*16 + c[0];
      

  7.   

    char buffer[3];
    buffer[0] = c[0];
    buffer[1] = c[1];
    buffer[2] = 0;
    sscanf(buffer, "%x", &aa);