Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int sub1(char digit);
unsigned char sub2(char digit[2]);
void sub3(char *hex, unsigned char *dec);
main()
{
char hex[] = "B22101";
unsigned char dec;
int len;
len = strlen(hex);
//printf("%s\n", hex);
//printf("%d\n", len);
while(len!=0){
sub3(hex, &dec);
len = len - 2;
}
printf("%d\n", dec);
}
void sub3(char *hex, unsigned char *dec)
{
int len;
int i;
len = strlen(hex);
//printf("len = %d\n", len);
//printf("hex = %s\n", hex);
for(i=0; i<len/2; i++)
{
dec[i] = sub2(&hex[2*i]);
}
// printf("%s\n", dec);
}
unsigned char sub2(char digit[2])
{
int i1, i2;
//printf("digit = %s\n", digit);
i1 = sub1(digit[0]);
i2 = sub1(digit[1]);
//printf("i1= %d\n", i1);
//printf("i2 = %d\n", i2);
return i1*16+i2;
}
int sub1(char digit)
{
switch(digit)
{
case'0':
return 0;
case'1':
return 1;
case'2':
return 2;
case'3':
return 3;
case'4':
return 4;
case'5':
return 5;
case'6':
return 6;
case'7':
return 7;
case'8':
return 8;
case'9':
return 9;
case'A':
return 10;
case'B':
return 11;
case'C':
return 12;
case'D':
return 13;
case'E':
return 14;
case'F':
return 15;
}
}
thank you for the help..
ok..
now it compiles and seems like to work..
but..
some how it only convert first 2 hex number..
in this case B2 to 178 and store 178 in dec[]
then it converts 21 and 01 but not store in dec[]
i added while loop to repeat the sub3.. but same thing happens..