float readFloatLittleEndian() { // get 4 unsigned raw byte components, accumulating to an int, // then convert the 32-bit pattern to a float. int accum = 0; for ( int shiftBy=0; shiftBy<32; shiftBy+=8 ) { accum |= ( readByte () & 0xff ) << shiftBy; } return Float.intBitsToFloat( accum ); // there is no such method as Float.reverseBytes( f ); }