'A float is written as 4 bytes.
The float is converted into a 32-bit integer using a method equivalent to
Java\'s floatToIntBits and then encoded in little-endian format.'

def read_float(self):

    bits = ((((ord(self.read(1)) & 255L) | ((ord(self.read(1)) & 255L) << 8)) | ((ord(self.read(1)) & 255L) << 16)) | ((ord(self.read(1)) & 255L) << 24))
    return STRUCT_FLOAT.unpack(STRUCT_INT.pack(bits))[0]
