1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
#include <stdio.h>
#include <string.h>
enum {HEX_A=10,HEX_B,HEX_C,HEX_D,HEX_E,HEX_F} ;
enum {HEX_0=0,HEX_1,HEX_2,HEX_3,HEX_4,HEX_5,HEX_6,HEX_7,HEX_8,HEX_9} ;
main() {
char entry[4] ;
int i = 0 ; /* index of hex data */
int res_1, res_2, res ; /* result containers */
int ctrl=0 ; /* control var for special case '0Xh' entry */
int hex ; /* for futur: to store the hex entry value */
res_1 = res_2 = 0 ;
gets(entry) ;
if (((strlen(entry)) ==4 ) && ((entry[0] == '0') && entry[1] == 'x' || entry[1] == 'X') && ((get_hex(entry[2]) != 16 ) && (get_hex(entry[3]) != 16) )) {
i=2 ; /* set index over '0x' */
/* for futur: hex=entry[2]+entry[3] ; set the hex entry value */
}
else if (((strlen(entry)) == 3 ) && ((entry[0] == '0') && entry[1] == 'x' || entry[1] == 'X') && (get_hex(entry[2]) != 16 )) {
i=2 ; /* set index over '0x' */
ctrl=1 ; /* set the control variable for the case 'Oxh' value */
/* for futur: hex=entry[3] ; set the hex entry value */
}
else if (((strlen(entry)) <= 2) && ( (get_hex(entry[0]) != 16 ) && (get_hex(entry[1]) != 16) )) {
i=0 ; /* set index without '0x' */
/* for futur: hex=entry[0]+entry[1] ; set the hex entry value */
}
else {
printf("Enter an hex octet value please !!!\n") ;
return ;
}
if (! ctrl) {
res_1=get_hex(entry[i]) ; /* i=2 case '0xhh' or i=0 case 'hh' */
i += 1 ;
res_2=get_hex(entry[i]) ; /* i=2 case '0xhh' or i=0 case 'hh' */
res=(res_1 * 16) + res_2 ;
}
else {
res=get_hex(entry[i]) ; /* i=2 case '0xh' */
}
/*for futur: printf("hex: %c = %i\n",hex,res) ; printf with the entry value */
printf("%i\n",res) ;
}
get_hex(int c) {
char res ;
res=(char) c ;
if ((res == 'F') || (res == 'f')) {
return HEX_F ;
}
else if ((res == 'E') || (res == 'e')){
return HEX_E ;
}
else if ((res == 'D') || (res == 'd')) {
return HEX_D ;
}
else if ((res == 'C') || (res == 'c')) {
return HEX_C ;
}
else if ((res == 'B') || (res == 'b')) {
return HEX_B ;
}
else if ((res == 'A') || (res == 'a')) {
return HEX_A ;
}
else if (res == '9') {
return HEX_9 ;
}
else if (res == '8') {
return HEX_8 ;
}
else if (res == '7') {
return HEX_7 ;
}
else if (res == '6') {
return HEX_6 ;
}
else if (res == '5') {
return HEX_5 ;
}
else if (res == '4') {
return HEX_4 ;
}
else if (res == '3') {
return HEX_3 ;
}
else if (res == '2') {
return HEX_2 ;
}
else if (res == '1') {
return HEX_1 ;
}
else if (res == '0') {
return HEX_0 ;
}
return 16 ;
} |
Partager