PHP makes life a lot easier for quick or dirty maintenance scripts, cron jobs or web applications but how does it do for older, not so straight forward problems dealing with bits and bytes? I was surprised how easy it was to manipulate bits in a byte with php. Here is an function that made my life a fair amount easier when having to check for a specific bit in a byte.

This function checks whether a certain bit is set or not given a byte and an index. It returns true if the chosen bit is set. It casts the $value argument to a integer just in case. The index $n goes from left to right so the most significant bit is bit one and the least significant is bit eight. This function will only work for integers between 0 and 255 because that was all I needed at the time. It would be trivial to write either a function to separate bytes in an integer or to increase the amount of bits that this function checks. I originally had a different function here but the Internet quickly told me that there was an easier way to do this.

<?php function check_bit($value,$n=8) { $value = (int)$value; if($value & (1<<(8-$n))) { return true; } else { return false; } } //Check Bit Usage Example $test_byte1 = "4"; if( check_bit($test_byte1,2)) echo "Bit 2 is set in ".decbin($test_byte1); else echo "Bit 2 is not set in ".decbin($test_byte1); ?>

Here are the php bitwise operator definitions from the php documentation. Look like C much?