2015-11-30 2 views
0

У меня возник вопрос о разделении длинной двоичной строки на более короткие.Python 3.x - разделение длинной двоичной строки на короткий

Например, я пытаюсь преобразовать ...

000000100000000011000000100000000010000000100000000001 

к ...

000000100000000011 
000000100000000010 
000000100000000001 

Так в принципе, я ищу команду питона так, что программа может создать новый строка каждые 18 цифр и, если возможно, введите пробел между первыми 7 цифрами и последними 11 цифрами. А затем переверните их обратно до более длинной строки.

ответ

5

Это разделит вашу длинную строку на более короткие строки.

>>> s = '000000100000000011000000100000000010000000100000000001' 
>>> print('\n'.join([s[i:i + 7] + ' ' + s[i + 7:i + 18] for i in range(0,len(s),18)])) 
0000001 00000000011 
0000001 00000000010 
0000001 00000000001 

Это также будет указано в указанных вами местах.

Чтобы идти в противоположном направлении, мы можем сделать следующее:

>>> f = '0000001 00000000011\n0000001 00000000010\n0000001 00000000001' 
>>> print(''.join([c for c in f if c in '01'])) 
000000100000000011000000100000000010000000100000000001 
+0

Большое спасибо! Есть ли честь отменить их обратно к «с», как только ваши раскол? –

+0

Зачем вам это нужно? –

+0

В основном, я редактирую двоичное значение, чтобы изменить номер позиции в игре. Игра использует шестнадцатеричные значения в файле сохранения. Поэтому, если я хочу преобразовать двоичный номер в hex, я подумал, что мне нужна длинная двоичная строка. –

1
val = '000000100000000011000000100000000010000000100000000001' 
short_val = '' 
for i range(len(val) - 1): 
    if i % 16 == 0: 
     print(short_val) 
     short_val = '' 
    else: 
     short_val += val[i]