Untitled

 avatar
unknown
plain_text
a year ago
1.3 kB
1
Indexable
#include <stdio.h>

// Функция для вывода сообщения об ошибке
void printError() {
    printf("n/a\n");
}

// Функция кодирования
void encode() {
    int c;
    while ((c = getchar()) && c != '\n' && c != EOF) {
        printf("%02X", c);
    }
}

// Функция декодирования
void decode() {
    int c1, c2;
    while ((c1 = getchar()) && c1 != '\n' && c1 != EOF) {
        if (c1 == ' ') continue; // Пропуск пробелов
        c2 = getchar();

        if (c1 >= '0' && c1 <= '9') c1 -= '0';
        else if (c1 >= 'A' && c1 <= 'F') c1 -= 'A' - 10;
        else if (c1 >= 'a' && c1 <= 'f') c1 -= 'a' - 10;
        else {
            printError();
            return;
        }

        if (c2 >= '0' && c2 <= '9') c2 -= '0';
        else if (c2 >= 'A' && c2 <= 'F') c2 -= 'A' - 10;
        else if (c2 >= 'a' && c2 <= 'f') c2 -= 'a' - 10;
        else {
            printError();
            return;
        }

        printf("%c", (c1 << 4) | c2);
    }
}

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

    if (argv[1][0] == '0') {
        encode();
    } else if (argv[1][0] == '1') {
        decode();
    } else {
        printError();
        return 1;
    }

    return 0;
}
Leave a Comment