import os

def texto_para_binario(texto):
    return " ".join(format(ord(c), "08b") for c in texto)

def binario_para_texto(binario):
    chars = binario.split()
    return "".join(chr(int(b, 2)) for b in chars)

print("CODIFICAR / DESCODIFICAR")
modo = input("?> ").strip().lower()

if modo == "codificar":
    entrada = input("I> ")
    saida = input("O> ")

    try:
        with open(entrada, "r", encoding="utf-8") as f:
            texto = f.read()

        binario = texto_para_binario(texto)

        with open(saida, "w") as f:
            f.write(binario)

        print("\nArquivo codificado com sucesso!")

    except Exception as e:
        print("Erro:", e)

elif modo == "descodificar":
    entrada = input("I> ")
    saida = input("O> ")

    try:
        with open(entrada, "r") as f:
            binario = f.read()

        texto = binario_para_texto(binario)

        with open(saida, "w", encoding="utf-8") as f:
            f.write(texto)

        print("\nArquivo descodificado com sucesso!")

    except Exception as e:
        print("Erro:", e)

else:
    print("Modo inválido!")
