Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int in_range(int num, int fpos, int spos) {
- return (num >= fpos && num <= spos ? 1 : 0);
- }
- void to_hex(int ascii) {
- char a = (char)(ascii / 16 + 48), b;
- if (ascii % 16 < 10) {
- b = (char)(ascii % 16 + 48);
- } else {
- switch (ascii % 16) {
- case 10:
- b = 'A';
- break;
- case 11:
- b = 'B';
- break;
- case 12:
- b = 'C';
- break;
- case 13:
- b = 'D';
- break;
- case 14:
- b = 'E';
- break;
- case 15:
- b = 'F';
- break;
- }
- }
- printf("%c%c", a, b);
- }
- int ascii_from_hex(char a, char b) {
- int ascii = 0;
- if (in_range((int)a, 49, 57)) {
- ascii += ((int)a - 48) * 16;
- } else if (in_range((int)a, 65, 70)) {
- ascii += ((int)a - 55) * 16;
- }
- if (in_range((int)b, 49, 57)) {
- ascii += ((int)b - 48);
- } else if (in_range((int)b, 65, 70)) {
- ascii += ((int)b - 55);
- }
- return ascii;
- }
- int main(int argc, char * argv[]) {
- if ((int)argv[argc-1][0] == (int)'0') {
- char word, space;
- scanf("%c%c", &word, &space);
- if (in_range((int)word, 65, 90) && space == ' ') {
- to_hex((int)word);
- } else {
- printf("n/a");
- space = '\n';
- }
- while (space != '\n') {
- scanf("%c%c", &word, &space);
- if (in_range((int)word, 65, 90) && (space == ' ' || space == '\n')) {
- printf(" ");
- to_hex((int)word);
- } else {
- printf("n/a");
- space = '\n';
- }
- }
- } else if ((int)argv[argc-1][0] == (int)'1') {
- char a = ' ', b = ' ', c = ' ';
- while (a != '\n' && b != '\n' && c != '\n') {
- scanf("%c%c%c", &a, &b, &c);
- if ((in_range((int)a, 49, 57) == 1) || (in_range((int)a, 65, 70) == 1) && (in_range((int)b, 49, 57) == 1) || (in_range((int)b, 65, 70) == 1) && ((c == '\n') || (c == ' '))) {
- printf("%c", (char)ascii_from_hex(a, b));
- }
- if (c != '\n') {
- printf(" ");
- }
- }
- } else {
- printf("n/a");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement