Zahlen zu Bits

Feeder

Bekanntes Mitglied
Hey,

ich würde gerne eine Liste aus Doubles zu einer koherenten Liste(im Sinne einer n*64bit langen Kette) aus Bits konvertieren, welche sich dann leicht zurück konvertieren lässt. Wie lässt sich so etwas realisieren?

Danke im Vorraus
 
Vielleicht in Verbindung mit Long.toBinaryString(Double.doubleToRawLongBits(d)) möglich? Müsstest ggf. die nicht vorhandenen Bits auffüllen.
 
Möchtest du das als String speichern oder einfach direkt binär in einer Datei?
Wenn du es Binär machen möchtest dann sieht das ungefähr so aus:
Java:
long binary = Double.doubleToRawLongBits(myDouble);
int byte1 = (int)(binary & 0xFF);
int byte2 = (int)((binary >> 8) & 0xFF);
int byte3 = (int)((binary >> 16) & 0xFF);
// Und so weiter

// Big Endian
// Für Small Endian einfach die reihenfolge umdrehen
outputstream.write(byte1);
outputstream.write(byte2);
outputstream.write(byte3);
// und so weiter

Und fürs wieder einlesen musst du bloß die 8 Bytes wieder einlesen und wieder einen long daraus machen. Den Long kann man dann wieder über eine Methode in der Long Klasse zum Double machen.
Java:
// Wieder Big Endian
// byte 1 meint hier der erste byte der gelesen wurde
long binary = ((byte1 & 0xFFL) << 56L) |
((byte2 & 0xFFL) << 48L) |
((byte3 & 0xFFL) << 40L) |
((byte4 & 0xFFL) << 32L) |
((byte5 & 0xFFL) << 24L) |
((byte6 & 0xFFL) << 16L) |
((byte7 & 0xFFL) << 8L) |
(byte8 | 0xFFL);
 

Zurück
Oben