Преобразование длинной строки битов как клев в десятичное в Python - PullRequest
1 голос
/ 12 мая 2019

У меня очень длинная строка битов (только 500 битов 0 и 1).Как мне преобразовать это в десятичную систему в наборах по 4 (то есть, клочок из 4 битов)?

Я попробовал следующий подход, но он не работает (отсюда здесь )

with open("atb.bat","rb") as file:   # atb.bat is the file which contains the string
    data=file.read(4)
with open("out.txt","w") as f:
    f.write(" ".join(map(str,data)))
    f.write("\n")

Я ожидаю, что на выходе будет 125 целых чисел, но в итоге получим только 4 десятичных значения!

Я тоже пробовал что-то подобное

p1 = 100000001111100101110011001101100110010 # (for example)
p22 =np.packbits(p1,axis=0)

, но не работает!

Есть идеи?Спасибо

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Вы можете преобразовать строки из 0 и 1 с помощью метода int(inputstring, 2): Преобразовать строку двоичных чисел base-2 в int

Так что цикл по длинной входной строке занимает 4 символа(что вы можете сделать, как описано здесь Разделить строку на каждый n-й символ? ) и передать их в метод int ().Затем объедините / соедините вывод с длинной строкой выходных данных.

0 голосов
/ 12 мая 2019
nn = 4    
p12_ = [int(p1[i:i+nn],2) for i in range(0, len(p1), nn)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...