static int strtohex(char *string2,unsigned char *string1,int len)
{
char dd[3];
char cc[2];
unsigned char ss;
unsigned char str[100];
int i,x;
for(i=0;i<len;i++)
{
memcpy(dd,string2+i*2,2);
dd[2]='\0';
ss=0x00;
switch(dd[0])
{
case 'a':
case 'A':
x=160;
break;
case 'b':
case 'B':
x=176;
break;
case 'c':
case 'C':
x=192;
break;
case 'd':
case 'D':
x=208;
break;
case 'e':
case 'E':
x=224;
break;
case 'f':
case 'F':
x=240;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
cc[0]=dd[0];
cc[1]='\0';
x=atoi(cc)*16;
break;
}
cc[0]=0x00;
ss=ss+x;
switch(dd[1])
{
case 'a':
case 'A':
x=10;
break;
case 'b':
case 'B':
x=11;
break;
case 'c':
case 'C':
x=12;
break;
case 'd':
case 'D':
x=13;
break;
case 'e':
case 'E':
x=14;
break;
case 'f':
case 'F':
x=15;
break;
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
cc[0]=dd[1];
cc[1]='\0';
x=atoi(cc);
break;
}
ss=ss+x;
*(string1+i)=ss;
}
*(string1+len)=0x00;
}使用如下
char data[]="0123456789";strtohex( data, data1, 8 );当i为0时 
        x=atoi(cc)*16;  调试模式下可以看到X值为 0X00000000
        ss=ss+x;        SS为0X00
  在第二个switch里
        x=atoi(cc);     X为0x00000009
        ss=ss+x;        SS值为0x09我现在不知道 SS+X到底是怎么运算的! 请大家说说