Reputation: 1021
To get bits from bytes:
bytes = bytes([0x13, 0x00, 0x00, 0x00, 0x08, 0x00])
bits = numpy.unpackbits(bytes)
throws this error:
TypeError: Expected an input array of unsigned byte data type
but if I get bytes in this way it works:
bytes = numpy.fromfile(filename, dtype="uint8")
How to solve this error, thanks.
Upvotes: 2
Views: 289
Reputation: 3280
You have to pass an array with a dtype
of unsigned integer:
hex_codes = 0x13, 0x00, 0x00, 0x00, 0x08, 0x00
arr = np.array(hex_codes).astype(np.uint8)
np.unpackbits(arr)
Output:
array([0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0], dtype=uint8)
Btw, you probably know this, but you should not reassign a builtin as you did with bytes
.
Upvotes: 1
Reputation: 718
bytes should be unsigned array, why not use a numpy unsigned?
bytearray = numpy.array([0x13, 0x00, 0x00, 0x00, 0x08, 0x00],dtype=numpy.uint8)
bits = numpy.unpackbits(bytearray)
Upvotes: 1