Untitled

 avatar
unknown
plain_text
a year ago
1.2 kB
3
Indexable
#include <stdio.h>

void encode(char c) {
    printf("%02X ", c);
}

void decode(char* str) {
    int c;
    if (str[0] >= '0' && str[0] <= '9') c = str[0] - '0';
    else if (str[0] >= 'A' && str[0] <= 'F') c = str[0] - 'A' + 10;
    else if (str[0] >= 'a' && str[0] <= 'f') c = str[0] - 'a' + 10;
    else {
        printf("n/a ");
        return;
    }
    c *= 16;
    if (str[1] >= '0' && str[1] <= '9') c += str[1] - '0';
    else if (str[1] >= 'A' && str[1] <= 'F') c += str[1] - 'A' + 10;
    else if (str[1] >= 'a' && str[1] <= 'f') c += str[1] - 'a' + 10;
    else {
        printf("n/a ");
        return;
    }
    printf("%c ", c);
}

int main(int argc, char* argv[]) {
    if (argc != 2) {
        printf("n/a\n");
        return 1;
    }
    int mode = argv[1][0] - '0';
    if (mode != 0 && mode != 1) {
        printf("n/a\n");
        return 1;
    }
    char input[3] = {0};
    if (mode == 1) { // Decode mode
        while (scanf("%2s", input) == 1) {
            decode(input);
            if (getchar() == '\n') break;
        }
    } else { // Encode mode
        char c;
        while ((c = getchar()) != '\n' && c != EOF) {
            encode(c);
        }
    }
    printf("\n");
    return 0;
}
Editor is loading...
Leave a Comment