2016-08-12 3 views
0

Я пытаюсь перебрать вход 011 в виде строки, как:Преобразование двоичного числа в строку питона

val = str(011) 
for _iter in range(len(val)): 
    if _iter[i]=='1': 
     print "yes" 

Но на проверку значения, это, кажется, дает разные вывод.

>>> val = str(011) 
>>> val 
'9' 
>>> val = str(42565) 
>>> val 
'42565' 

Почему я получаю '9' для вышеуказанного значения ??

Реализация:

Я хочу, чтобы отобразить значения списка
предположим, что list = [1,2,3] в соответствии со строкой 011
поэтому выход будет

2 
3 
+1

Можете ли вы подробно остановиться на результатах, которые вы пытаетесь получить? – Mureinik

+2

Не является ли префикс '0' для восьмеричного? Кроме того, используйте '0b' для двоичного и' 0o' для восьмеричной и прямой совместимости. –

ответ

0
011 

Наличие ' 0 ', интерпретируется как восьмеричный (база 8). 1 * 8 + 1 = 9

Если вы хотите перебрать символы, а затем просто сделать его строку, заключив его в кавычки:

val = '011' 

Чтобы преобразовать строку из 0 и 1 символов, как это к целое, вы можете позвонить int так:

int(val, base=2) 

для обхода строки синтаксического анализа, а просто присвоить двоичную константу с переменной, используйте префикс 0b:

val = 0b011 
print val  # outputs 3 
+0

спасибо, я думаю, что это настоящая проблема. – bhansa

Смежные вопросы