Я пытаюсь получить строку jJ
в качестве входных данных, а затем преобразовываю каждый символ в его 6-битную двоичную форму, используя сопоставление, данное в a, и объединяю их и возвращаю в mapFirst(string)
. То есть jJ
становится 100011001001
.
В binaryToLetter(string)
Я беру возвращенное значение и разделяю его на части по 8 битов, преобразую обратно в символьную форму и объединяю. 100011001001
становится 00001000
и 11001001
, которые затем преобразуются и объединяются, чтобы дать (backspace)É
.
В моем коде я получаю сообщение об ошибке:
Exception has occurred: ValueError
invalid literal for int() with base 2: ''
File "C:\Users\Sembian\Desktop\exc files new\Ex_Files_Learning_Python\Exercise Files\task_cs\task1.py", line 11, in <genexpr>
return ''.join( str( int( (binNew[newLen:newLen-i]),2 ) ).replace('0b','').zfill(8) for i in range(0, newLen, n) )
Код, который я использовал:
from textwrap import wrap
a = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/']
def mapFirst(string):
return ''.join(str(bin(ord(chr(a.index(c))))).replace('0b','').zfill(6) for c in string)
def binaryToLetter(binNew):
newLen = len(str(binNew))
n=8
return ''.join( str( int( (binNew[newLen:newLen-i]),2 ) ).replace('0b','').zfill(8) for i in range(0, newLen, n) )
def main():
k = 'jJ'
print("the first binary value is: ",mapFirst(k))
print("the final decoded value is: ", binaryToLetter(mapFirst(k)))
if __name__ == "__main__":
main()