/*Calculator to escape for check sum error*/ #include #define MAX 10 //Maximum string length #define MAX_HEX 4 //Maximum output heximal void hex(int); void usage(void); int main() { char ch[MAX+1]; int i; //roof counter int num; char* endptr; while(1) { //buffer clear __fpurge(stdin); printf("Enter decimal:"); fgets(ch, MAX+1, stdin); for(i=0; i<=MAX; i++) { /*change '\n' to '\0'*/ if(ch[i]=='\n') { ch[i] = '\0'; break; } } if(strcmp(ch, "quit")==0) break; else if(strcmp(ch, "q")==0) break; /*change String to integer*/ num=strtol(ch, &endptr, 10); if(num > 65535 || num <0) { usage(); continue; } if(*endptr != '\0') { /*Chek the decimal input*/ usage(); continue; } /*Change to Hex*/ hex(num); } return 0; } /*change the decimal number to heximal number*/ void hex(int num) { //Charactor array for Presentation heximal char code[16] = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F'}; //Array for heximal code char str[MAX_HEX]; int i; //Initialize code Array for(i = 0; i < MAX_HEX; i++) str[i] = '0'; printf("---------------The result---------------\n"); printf("%d's value is...\n\n", num); //Convert decimal to heximal if(num<16) { str[0]=code[num]; } else { for(i = 0; num >= 16; i++) { str[i] = code[num%16]; num = num/16; if(num<16) { str[i+1]=code[num]; break; } } } //output of Array by big endian sequencing printf("Heximal data by big endian\n"); for(i=MAX_HEX-1; i>=0; i-=2) { printf("%c%c ",str[i],str[i-1]); } printf("\n\n"); //output of Array by little endian sequencing printf("Converting heximal to little endian\n"); for(i=0; i