#include unsigned char mychar[]={0x03,0xc0}; unsigned long StringToHex(char *str) { char *p; unsigned long val = 0; for (p = str; *p; ++p) { val <<= 4; switch (*p) { case '0': val += 0; break; case '1': val += 1; break; case '2': val += 2; break; case '3': val += 3; break; case '4': val += 4; break; case '5': val += 5; break; case '6': val += 6; break; case '7': val += 7; break; case '8': val += 8; break; case '9': val += 9; break; case 'A': case 'a': val += 10; break; case 'B': case 'b': val += 11; break; case 'C': case 'c': val += 12; break; case 'D': case 'd': val += 13; break; case 'E': case 'e': val += 14; break; case 'F': case 'f': val += 15; break; } } return val; } int main() { unsigned char tmpchar[255]; snprintf(tmpchar,sizeof(tmpchar),"0x%02x%02x",mychar[0],mychar[1]); printf("%d\n",StringToHex(tmpchar)); }