It also prints the first three bytes from the compass' measurement, of which only the second and third bits are meaningful. HOWEVER, the compass reading stays the same. The three bytes output appears as 0 239 239 over and over again.
That is very strange. The value 239 (decimal) will not fit in a byte. The code actually shows the values are displayed in HEX so 0x239 is 569 which is WAY too big to fit in a byte. You also don't show the part where is prints "Received angle: ". Perhaps you copied and pasted the code incorrectly?