Untitled
#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