I know how to read bytes — x.read(number_of_bytes)
, but how can I read bits in Python?
I have to read only 5 bits (not 8 bits [1 byte]) from a binary file
Any ideas or approach?
Read the first two bytes from your a_file file pointer and check the bits in the least or greatest byte — depending on the endianness of your platform (x86 is little-endian) — using bitshift operators. You can't really put bits into an array, as there isn't a datatype for bits.
Python Read Binary File into Byte Array First, the file is opened in the“ rb “ mode. A byte array called mybytearray is initialized using the bytearray() method. Then the file is read one byte at a time using f. read(1) and appended to the byte array using += operator.
To open a file in binary format, add 'b' to the mode parameter. Hence the "rb" mode opens the file in binary format for reading, while the "wb" mode opens the file in binary format for writing. Unlike text files, binary files are not human-readable. When opened using any text editor, the data is unrecognizable.
Python can only read a byte at a time. You'd need to read in a full byte, then just extract the value you want from that byte, e.g.
b = x.read(1)
firstfivebits = b >> 3
Or if you wanted the 5 least significant bits, rather than the 5 most significant bits:
b = x.read(1)
lastfivebits = b & 0b11111
Some other useful bit manipulation info can be found here: http://wiki.python.org/moin/BitManipulation
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With