Reversing bits in a byte

Oscar Benjamin oscar.j.benjamin at gmail.com
Tue Mar 12 16:44:50 CET 2013


On 12 March 2013 14:59, Oscar Benjamin <oscar.j.benjamin at gmail.com> wrote:
> Numpy and matplotlib will do what you want:
>
> import numpy as np
> import matplotlib.pyplot as plt
>
> def bits_to_ndarray(bits, shape):
>     abytes = np.frombuffer(bits, dtype=np.uint8)
>     abits = np.zeros(8 * len(abytes), np.uint8)
>     for n in range(8):
>         abits[n::8] = (abytes % (2 ** (n+1))) != 0

Whoops! The line above should be
        abits[n::8] = (abytes & (2 ** n)) != 0

>     return abits.reshape(shape)
>
> # 8x8 image = 64 bits bytes object
> bits = b'\x00\xff' * 4
>
> img = bits_to_ndarray(bits, shape=(8, 8))
> plt.imshow(img)
> plt.show()
>
>
> Oscar



More information about the Python-list mailing list