Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
1.2 kB
1
Indexable
Never
#include <stdio.h>

void encode() {
    char ch;
    while ((ch = getchar()) != '\n' && ch != EOF) {
        if (ch >= ' ' && ch <= '~') { // Печатаемые символы ASCII
            printf("%02X ", ch); // Вывод в шестнадцатеричном формате
        } else {
            printf("n/a ");
        }
    }
}

void decode() {
    char ch1, ch2;
    while ((ch1 = getchar()) && (ch2 = getchar())) {
        if (ch1 == '\n' || ch2 == '\n' || ch1 == EOF || ch2 == EOF) break;
        if (ch1 >= '0' && ch1 <= '9') ch1 = ch1 - '0';
        else if (ch1 >= 'A' && ch1 <= 'F') ch1 = ch1 - 'A' + 10;
        else { printf("n/a "); continue; }

        if (ch2 >= '0' && ch2 <= '9') ch2 = ch2 - '0';
        else if (ch2 >= 'A' && ch2 <= 'F') ch2 = ch2 - 'A' + 10;
        else { printf("n/a "); continue; }

        putchar((ch1 << 4) + ch2);
        getchar(); // Пропуск пробела
    }
}

int main(int argc, char *argv[]) {
    if (argc != 2) {
        printf("n/a\n");
        return 1;
    }

    if (argv[1][0] == '0') {
        encode();
    } else if (argv[1][0] == '1') {
        decode();
    } else {
        printf("n/a\n");
        return 1;
    }

    return 0;
}
Leave a Comment