bhansa
bhansa

Reputation: 7504

Converting binary number to string python

I am trying to iterate over the input 011 as a string like:

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

But on checking the values, it seems to give different ouput.

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

Why I am getting '9' for the above value ??

Implementation:

I want to display the values of a list
suppose list = [1,2,3] according to the string 011
so the output will be

2
3

Upvotes: 1

Views: 4175

Answers (1)

Jonathon Reinhart
Jonathon Reinhart

Reputation: 137398

011

Having a '0' prefix, is interpreted as an octal (base 8) number. 1*8 + 1 = 9

If you want to iterate over the characters, then simply make it a string by enclosing it in quotes:

val = '011'

To convert a string of 0 and 1 characters like this to an integer, you can call int like this:

int(val, base=2)

To bypass the string parsing, and simply assign a binary constant to a variable, use the 0b prefix:

val = 0b011
print val     # outputs 3

Upvotes: 2

Related Questions