Untitled
#include <stdio.h> // Функция для кодирования символов в их шестнадцатеричные ASCII коды void encode() { int c; while ((c = getchar()) != '\n' && c != EOF) { if (c != ' ') { // Игнорируем пробелы printf("%02X", c); } } } // Функция для декодирования шестнадцатеричных ASCII кодов обратно в символы void decode() { int c1, c2; while ((c1 = getchar()) != '\n' && c1 != EOF) { if (c1 == ' ') continue; // Пропускаем пробелы, если они есть c2 = getchar(); if (c2 == '\n' || c2 == EOF) break; // Если ввод не полный, завершаем 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 { printf("n/a"); 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 { printf("n/a"); return; } printf("%c", (c1 << 4) | c2); } } 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