byte[8] to double
-
hallo zusammen,
ich möchte einen byte[8] array in double konvertieren.
ich habe eine funktion für long gefunden aber ich weiss nicht wie ich sie für double anpasse .funktion bytesTolong :
long bytesTolong(byte[]) { int i; long val = 0; int bits = 64; long tval; for(i=8; i-- > 0;) { bits -= 8; tval = b[i]; tval = tval < 0 ? 256 + tval : tval; val |= tval << bits; } return val; }
ich habe auch die funktionen von java.nio verwendet aber bekomme ich immer 0.0 raus.
ByteBuffer bb = ByteBuffer.wrap(b) // b byte array //bb.order(ByteOrder.LITTLE_ENDIAN) double d = bb.getDouble();
weiss jemand rat ?
danke im voraus
youssef
-
Zum 'bytesTolong':
long ist anderes aufgebaut als double, bei double und float kommt man mit bitweiser Verschiebung nicht weit, da man den Wert über eine mathematische Formel aus den Bits errechnen muss.zum ByteBuffer:
Hab das eben laufen lassen und er hat mir auch ein Ergebnis != 0.0 geliefert, ob's es richtig war weiß aber nicht. Muss mal die Formel raussuchen ...
Und machst du vor'm wrapen noch was mit den Bytearray oder mit dem Bytebuffer?[edit]
Oder du nutzt deine Methode bytesToLong in Kombination mit Long#longBitsToDouble(long bits)
-
danke ersmal für die antwort.
vor wrapen habe ich gar nichts gemacht mit den Bytearray. ich habe den bytearray ausgegeben und da stehen zb für die wert 49:
49 0 0 0 0 0 0 0.
woran kann es noch liegen ? an byteorder vielleicht ?
ich prüfe das noch mal durch.gruss
youssef