2016-02-24 2 views
1

поэтому у меня есть бинарные литералы, но мне нужно удалить ведущие «0b» в каждом из них. Как мне сделать подписку на них? Вот мой текущий код:Как индексировать двоичный вывод 0b в списке

en = [132, 201, 141, 74, 140, 94, 141, 140, 141, 15, 31, 164, 90, 229, 201, 141, 78, 114, 241, 217, 141, 217, 140, 180, 141, 164, 51, 141, 188, 221, 31, 164, 241, 177, 141, 140, 51, 217, 141, 201, 229, 152, 141, 78, 241, 114, 78, 102, 94, 141, 74, 152, 31, 152, 141, 94, 201, 31, 164, 102, 164, 51, 90, 141, 201, 229, 164, 31, 201, 152, 152, 51, 115] 

key = 84 

#STEP 1 - 1ST XOR WITH KEY 

for i in range(0, len(en)): 
    en[i] = en[i]^key 
    en[i] = bin(en[i]) 
    if len(en[i]) < 10: 
     en[i] = '{:#010b}'.format(int(en[i],2)) 

print(en) 
print(' ') 

#STEP 2 - USE SBOX SUB ON EACH BLOCK NIBBLE 
for i in range(0, len(en)): 
    en[i] = list(en[i]) 

print(en) 
+0

Вы можете использовать '[2:]'. – zondo

ответ

2

Просто удалите # символ из спецификатора формата, потому что "для целых чисел, когда двоичной, восьмеричной или шестнадцатеричной выход используется, этот параметр добавляет префикс соответствующий„0b“, '0o' или '0x' до выходного значения " (source). Пример:

In [3]: '{:08b}'.format(1) 
Out[3]: '00000001' 

Между прочим, нет необходимости выполнять столько преобразований. Вы можете сократить первый цикл:

for i in range(len(en)): 
    en[i] = '{:08b}'.format(en[i]^key) 
+1

Спасибо за это! Я очень ценю это :) –