2017-01-20 3 views
1

Это домашнее задание, поэтому, если вы не хотите помогать, я это понимаю. Тем не менее, я не ищу алгоритм так же, как помощь с Python. Я хорошо знаком с C++, но несколько моих классов в этом семестре используют Python, поэтому я хотел бы немного практиковать его.Проект Преобразование Hex в Base64

Это работа, которая у меня есть до сих пор ... Это работает, но я хотел бы добавить некоторые проверки в программу, такие как проверка, чтобы исходный вход был в шестнадцатеричном формате.

Было бы полезно просто преобразовать строку в список и проверить оттуда?

Спасибо за вашу помощь,

import binascii #used to convert from hexadecimal to binary 
import base64 #used to convert from binary to base64 


""" 
get hexadecimal value 
convert to binary 
convert to base64 
""" 

#conversions 
hexa = input("Enter a hexadecimal value: ") 
bina = binascii.unhexlify(hexa) 
Base64 = base64.b64encode(bina) 

#print 
print(Base64) 

#exit program 
input("Exit...") 
+0

Что в настоящее время происходит на недопустимом вводе? –

+0

Программа заканчивается. Командная строка отключается без продолжения работы. –

+0

Возможно, вы захотите запустить свою программу из командной строки ('python myprogram.py') вместо графического интерфейса, чтобы вы могли прочитать вывод программы. https://stackoverflow.com/questions/12375173/how-to-stop-python-closing-immediately-when-executed-in-microsoft-windows –

ответ

1

Две вещи:

  1. unhexlify сгенерирует исключение, если вход содержит ошибку. Вы можете поймать это исключение и, например, продолжить цикл.

    >>> try: 
    ...  binascii.unhexlify('tsst') 
    ... except binascii.Error as e: 
    ...  print(f'Invalid input ({e}). Please try again:', file=sys.stderr) 
    ... 
    Invalid input (Non-hexadecimal digit found). Please try again: 
    
  2. Вы можете перебирать символы строки, поэтому преобразование его в список был бы не нужно.

    >>> import string 
    >>> all(c in string.hexdigits for c in 'cafebabe') 
    True 
    
+0

Стоит отметить, что для первого примера требуются новые (3.6) fstrings. – Holloway

+0

Спасибо, ребята! Я вижу, где Исключение находится в руководстве сейчас. –

+0

Если unhexlify не работает и генерирует исключение, значит ли это, что он не в шестнадцатеричной форме? –

Смежные вопросы