Как преобразовать bin в char и char в bin ASCII, используя Python? - PullRequest
0 голосов
/ 23 марта 2020

Как я могу преобразовать bin в char и char в bin в ASCII (в байтах)?

Например, если у меня есть: 1010111001100111110010101001011111000001101111011000011

У меня должно быть ®Ï*¾°, но если Я преобразую этот символ в bin У меня будет:

1010111011001111101010101111101101110110000

Эта двоичная строка не совпадает, потому что, например, char * получается с 00101010 при преобразовании bin в голец. Но когда я конвертирую char * в bin, у меня появляется 101010.

Вот мой код:

def bin_to_char(self,text_bin):
        char=''
        stock=''

        for bit in text_bin:
            if len(stock)<8:
                stock+=bit
            elif len(stock)==8:
                print(stock)
                char+=chr(int(stock, 2))
                print(char)
                stock=''

        char+=chr(int(stock, 2)) #add the last binary text less than 8

        return(char)

    def char_to_bin(self,char):
        chbin=''

        for e in char:
            print(e)

            chbin+=format(ord(e), 'b')
            print(chbin)

        return(chbin)

1 Ответ

0 голосов
/ 24 марта 2020

Двоичная строка не представляет октеты символов. Он должен быть проанализирован для каждой последовательности. Вот код для go из двоичной строки в текстовую строку. Затем преобразуйте строку в двоичную.

Полученная строка представляет собой переменную rs.

s = '1010111001100111110010101001011111000001101111011000011'
t = s
a = [['C', '00'], ['N', '10'], ['T', '11'], ['A', '011'], ['G','010']]

letter = 0
code = 1
rs = ''

while (t != ''):
    for pair in a:
        if t.startswith(pair[code]):
            t = t[len(pair[code]):]
            rs += pair[letter]
            break

print(rs)

# Convert rs back to binary string

rbs = ''
for c in rs:
    for pair in a:
        if c == pair[letter]:
            rbs += pair[code]
            break

print(rbs)
if (rbs != s): print('ERROR: Conversion failed')
exit(0)

Дайте мне знать, какую оценку я получу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...