Extract LSB bit from a Byte in python
Solution 1
Is your "byte" an int
? If so, just take bitwise AND (&
) with 1
(or, if you want to be more explicit, the binary literal 0b1
) to get the least significant bit.
>>> x = 14
>>> x & 1
0
>>> x = 15
>>> x & 1
1
Is your "byte" a bytes
object? If so, just index into it and take bitwise AND.
>>> y = bytes([14, 15])
>>> y[0] & 1
0
>>> y[1] & 1
1
Solution 2
Simplest and probably fastest:
least_significant_bit_of_x = x & -x
You can find more tricks here: https://www.informit.com/articles/article.aspx?p=1959565
Although the go-to reference for bitwise "black magic" is Knuth's "The Art of Computer Programming, vol. 1".
![3lokh](https://i.stack.imgur.com/cOXmL.png?s=256&g=1)
3lokh
Updated on March 22, 2020Comments
-
3lokh over 4 years
I have a byte in variable 'DATA'. I want to extract the LSB bit out of it and print it. I'm very new to python, I found many articles with complex bitwise addition logic and all which was very tough to understand. I'm looking for a simple logic like we do with the strings eg DATA[7:1] Please help me out...
-
senshin over 10 years@Nikhil When you read a file in binary mode (
rb
), you get abytes
object fromfile.read()
. To find the least significant bit, take bitwise AND with0b1
. Note that you will need to figure out which parts of the file are header and which parts are actual image data. It may help to use a library like PIL.