# [Solved] Converting integer array to binary array in python

I am trying to convert an array with integers to binary, using python 2.7.

A simplified version of my code is the following:

`````` #!/usr/bin/python
import numpy as np

a=np.array([6,1,5,0,2])
b=np.array(np.zeros((5)))

for i in range(10):
b[i]=bin(int(a[i])).zfill(8)
``````

The code gives me the error message:

``````b[i]=bin(int(a[i])).zfill(8)
ValueError: invalid literal for float(): 0000b110
``````

What is wrong with my code?
Is there another way to do this?
The original code is part of a much greater project with 2 dimensional arrays.

p.s I’m a relative novice to Python

## Solution #1:

Numpy attempts to convert your binary number to a `float`, except that your number contains a `b` which can’t be interpreted; this character was added by the `bin` function, eg. `bin(2)` is `0b10`. You should remove this `b` character before your `zfill` like this by using a “slice” to remove the first 2 characters:

``````b[i]=bin(int(a[i]))[2:].zfill(8)
``````

## Solution #2:

`bin` will create a string that starts with `0b` indicating that it is a binary representation. If you only want the binary representation you have to slice the first two characters before you call `zfill`.

Instead of doing this, you could use `format` like so

``````b[i] = '{:08b}'.format(a[i])
``````

Basically, this will print the binary representation of `a[i]` padded with `0` until it has length 8.

See the Format Specification Mini-Language for further details.

The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .