Untitled

mail@pastecode.io avatar
unknown
plain_text
19 days ago
1.5 kB
1
Indexable
Never
#include <stdio.h>

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

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

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

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

        if (c2 >= '0' && c2 <= '9') c2 = c2 - '0';
        else if (c2 >= 'A' && c2 <= 'F') c2 = c2 - 'A' + 10;
        else if (c2 >= 'a' && c2 <= 'f') c2 = 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