Как преобразовать ASCII в битовую строку (двоичную) - PullRequest
0 голосов
/ 02 марта 2020

Я ищу al oop, похожий на этот, для преобразования ASCII в десятичную, а затем десятичную в двоичную строку: string = input ("Enter message:")

#Convert string from ASCII to Decimal
A_string = [ord(c) for c in string]
print(A_string)

# add 1 to ASCII value 
B_string = A_string
for i in range(len(B_string)):
    B_string[i] = B_string[i] + 1 
print(B_string)


#Decimal to Binary
decimal = B_string
remainder = decimal
Binary_string = decimal

for i in range(len(decimal)):
    remainder[i] = int(decimal[i])
    remainder[i] %= 2
    decimal[i] = decimal[i] // 2
    Binary_string[i] = str(remainder[i] + Binary_string[i])
print(Binary_string)

Что я НЕ ищу такие вещи:

res = "" .join (f "{ord (shiftedChar): 08b}")

shifttedChar

Я ищу Методы BASI C OLD SCHOOL ... программирование того, что на самом деле происходит, с использованием базового c деления, умножения, степеней и т. Д. c

1 Ответ

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

С { ссылка }

Сначала вам нужно удалить префикс 0b и добавить строку с нуля слева, чтобы ее длина делилась на 8, чтобы делить цепочку битов легко разбить на символы:

bitstring = bitstring[2:]
bitstring = -len(bitstring) % 8 * '0' + bitstring

Затем вы разбиваете строку на блоки из восьми двоичных цифр, преобразуете их в символы ASCII и объединяете их обратно в строку:

string_blocks = (bitstring[i:i+8] for i in range(0, len(bitstring), 8))
string = ''.join(chr(int(char, 2)) for char in string_blocks)

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

...