我这是没有中间没有空格的函数:
int Hex_asc(unsigned char *sin , int sin_len , unsigned char *sout)
{
unsigned char tmp[3];
int len , i , j;

tmp[2] = '\0';
len = sin_len / 2;
for(i = 0 ; i < len ; i++)
{
strncpy((char *)tmp , (char *)(sin + (i * 2)) , 2);
sscanf((char *)tmp , "%x" , &j);
sout[i] = j;
}
return len;
}