public static double getIEEEDouble(byte[] data,
int pos) {
int num1 = IntegerHelper.getInt(data[pos], data[pos + 1],
data[pos + 2], data[pos + 3]);
int num2 = IntegerHelper.getInt(data[pos + 4], data[pos + 5],
data[pos + 6], data[pos + 7]);
// Long.parseLong doesn't like the sign bit, so have to extract this
// information and put it in at the end. (Acknowledgment: thanks
// to Ruben for pointing this out)
boolean negative = ((num2 & 0x80000000) != 0);
// Thanks to Lyle for the following improved IEEE double processing
long val = ((num2 & 0x7fffffff) * 0x100000000L) +
(num1 < 0 ? 0x100000000L + num1 : num1);
double value = Double.longBitsToDouble(val);
if (negative)
{
value = -value;
}
return value;
}
Gets the IEEE value from the byte array passed in |