title: Python Binary to hex conversion preserving leading zeroes
body: <p>I was wanting to convert a 576 bit binary number to hex so I wrote the following python script. While writing it was fun, i believe it to be massive, ugly, and most likely unnecessarily complicated.  I was wondering if anyone new of a more efficient way to do this using some of the python built in.  The issue I had using any that I could find was preserving the leading zeroes as it is absolutely critical.  Below is the input and output i used to test and the code I wrote. </p>
  
  <p>The input:</p>
  
  <pre><code>000011110111101011000101
  </code></pre>
  
  <p>The output:</p>
  
  <pre><code>0f7ac5
  </code></pre>
  
  <p>Code</p>
  
  <pre><code>file = open("binforhex.txt",'r')
  stream = file.read()
  
  num = []
  byte = []
  hexOut = []
  n = 0
  
  print stream
  
  for x in stream:
      num.append(x)
  
  
  while n &lt; len(num):
      byte.append(int(num[n]))
      if n &gt; 1:
          if (n + 1) % 4  == 0:
              if cmp([0, 0, 0, 0],byte) == 0 :
                  hexOut.append('0')
              elif cmp([0, 0, 0, 1],byte) == 0 :
                  hexOut.append('1')
              elif cmp([0, 0, 1, 0],byte) == 0 :
                  hexOut.append('2')
              elif cmp([0, 0, 1, 1],byte) == 0 :
                 hexOut.append('3')
              elif cmp([0, 1, 0, 0],byte) == 0:
                  hexOut.append('4')
              elif cmp([0, 1, 0, 1],byte) == 0:
                  hexOut.append('5')
              elif cmp([0, 1, 1, 0],byte) == 0:
                  hexOut.append('6')
              elif cmp([0, 1, 1, 1],byte) == 0:
                  hexOut.append('7')
              elif cmp([1, 0, 0, 0],byte) == 0:
                  hexOut.append('8')
              elif cmp([1, 0, 0, 1],byte) == 0:
                  hexOut.append('9')
              elif cmp([1, 0, 1, 0],byte) == 0:
                  hexOut.append('a')
              elif cmp([1, 0, 1, 1],byte) == 0:
                  hexOut.append('b')
              elif cmp([1, 1, 0, 0],byte) == 0:
                  hexOut.append('c')
              elif cmp([1, 1, 0, 1],byte) == 0:
                  hexOut.append('d')
              elif cmp([1, 1, 1, 0],byte) == 0:
                  hexOut.append('e')
              elif cmp([1, 1, 1, 1],byte) == 0 :
                  hexOut.append('f')
              byte.pop()
              byte.pop()
              byte.pop()
              byte.pop()
      n += 1
  print ''.join(hexOut)
  </code></pre>