Загрузка данных


#include <stdio.h>

void Encode() {
    char c;
    char buffer[1000];
    int pos = 0;
    int is_first = 1;
    char prev_was_space = 1;

    while (scanf("%c", &c) == 1) {
        if (c == '\n') break;
        if (c == ' ') {
            prev_was_space = 1;
            continue;
        }

        if (!prev_was_space && !is_first) {
            printf("n/a\n");
            return;
        }

        if (!is_first) {
            buffer[pos++] = ' ';
        }
        pos += sprintf(&buffer[pos], "%02X", (int)c);

        is_first = 0;
        prev_was_space = 0;
    }

    buffer[pos] = '\0';
    printf("%s\n", buffer);
}

void Decode() {
    char c1, c2, sep;
    int is_first = 1;

    while (scanf("%c", &c1) == 1) {
        if (c1 == '\n') break;
        if (c1 == ' ') continue;

        if (scanf("%c", &c2) != 1 || c2 == '\n' || c2 == ' ') {
            printf("n/a\n");
            return;
        }

        int ret = scanf("%c", &sep);
        if (ret == 1 && sep != ' ' && sep != '\n') {
            printf("n/a\n");
            return;
        }

        int v1 = -1, v2 = -1;

        if (c1 >= '0' && c1 <= '9')
            v1 = c1 - '0';
        else if (c1 >= 'a' && c1 <= 'f')
            v1 = c1 - 'a' + 10;
        else if (c1 >= 'A' && c1 <= 'F')
            v1 = c1 - 'A' + 10;

        if (c2 >= '0' && c2 <= '9')
            v2 = c2 - '0';
        else if (c2 >= 'a' && c2 <= 'f')
            v2 = c2 - 'a' + 10;
        else if (c2 >= 'A' && c2 <= 'F')
            v2 = c2 - 'A' + 10;

        if (v1 == -1 || v2 == -1) {
            printf("n/a\n");
            return;
        }

        int val = v1 * 16 + v2;
        if (!is_first) printf(" ");
        printf("%c", val);
        is_first = 0;
    }
    printf("\n");
}

int main(int argc, char *argv[]) {
    if (argc != 2) return 1;

    int mode = -1;
    if (argv[1][0] == '0' && argv[1][1] == '\0')
        mode = 0;
    else if (argv[1][0] == '1' && argv[1][1] == '\0')
        mode = 1;

    if (mode == -1) return 1;

    if (mode == 0)
        encode();
    else
        decode();

    return 0;
}