Piu' semplicemente ...

codice:
  char *str = "3a";
  int num;
	
  sscanf(str, "%x", &num); 

  printf("%x", num);