title: Writing bits to a binary file
body: <p>I have 23 bits represented as a string, and I need to write this string to a binary file as 4 bytes. The last byte is always 0. The following code works (Python 3.3), but it doesn't feel very elegant (I'm rather new to Python and programming). Do you have any tips of making it better? It seems a for-loop might be useful, but how do I do the slicing within the loop without getting a IndexError? Note that that when I extract the bits into a byte, I reverse the bit-order. </p>
  
  <pre><code>from array import array
  
  bin_array = array("B")
  bits = "10111111111111111011110"    #Example string. It's always 23 bits
  byte1 = bits[:8][::-1]
  byte2 = bits[8:16][::-1]
  byte3 = bits[16:][::-1]
  bin_array.append(int(byte1, 2))
  bin_array.append(int(byte2, 2))
  bin_array.append(int(byte3, 2))
  bin_array.append(0)
  
  with open("test.bnr", "wb") as f:
      f.write(bytes(bin_array))
  
  # Writes [253, 255, 61, 0] to the file
  </code></pre>