8

I have a binary string representation of a byte, such as

01010101

How can I convert it to a real binary value and write it to a binary file?

Thomas Gerot
  • 50
  • 1
  • 6
xiaohan2012
  • 9,870
  • 23
  • 67
  • 101

1 Answers1

12

Use the int function with a base of 2 to read a binary value as an integer.

n = int('01010101', 2)

Python 2 uses strings to handle binary data, so you would use the chr() function to convert the integer to a one-byte string.

data = chr(n)

Python 3 handles binary and text differently, so you need to use the bytes type instead. This doesn't have a direct equivalent to the chr() function, but the bytes constructor can take a list of byte values. We put n in a one element array and convert that to a bytes object.

data = bytes([n])

Once you have your binary string, you can open a file in binary mode and write the data to it like this:

with open('out.bin', 'wb') as f:
    f.write(data)
Mark Dickinson
  • 29,088
  • 9
  • 83
  • 120
Jeremy
  • 1
  • 85
  • 340
  • 366
  • 2
    For python 2.6+, you're probably best off using `bytearray([n])`. [See doc](http://docs.python.org/2/library/functions.html#bytearray). – ford Jan 29 '14 at 15:14