Hey leute,
ich hab gerade folgendes problem: Ich will viele aber kleine floats in eine datei spcihern. Der Bereich geht von 0,0 bis 10,0, enthält also auch z.B 5,4.
Und da man zahlen bis 10 ja wunderbar in 4 bits reinpassen, wollte ich nicht pro zahl nicht 2 oder mehr bytes benutzen sondern nur einen. Aber da gibts ein problem:
Angenommen wir aben also z.B. 5,4 ist das Java-Intern [c]0101 0000 0000 0000 0100[/c]. Das dann an dem Punkt gesplittet ergibt one=[c]0000 0101[/c] und two=[c]0000 0100[/code].
Also schieb ich die bits von one 4mal nach links und hab dann [c]0101 0000[/c] und addier dann two drauf und das würde dann [c]0101 0100[/c] ergeben, das was ich will.
Aber die zeilen 5 und 7 ergeben den Fehler "possible loss of precision". So genau kenn ich mich jetzt mit dem bit-shifting nich aus. Kann mir jemand erklären, wie ich das jetzt bewerkstelligen kann, dass aus [c]0101 0000 0000 0000 0100[/c] [c]0101 0100[/c] wird?
Danke schonmal fürs lesen&gedanken machen.
ich hab gerade folgendes problem: Ich will viele aber kleine floats in eine datei spcihern. Der Bereich geht von 0,0 bis 10,0, enthält also auch z.B 5,4.
Und da man zahlen bis 10 ja wunderbar in 4 bits reinpassen, wollte ich nicht pro zahl nicht 2 oder mehr bytes benutzen sondern nur einen. Aber da gibts ein problem:
Java:
// Ich hatte das auch schon ohne den string probiert, ging aber nicht.
String a=i+"";
int dot=a.indexOf(".");
byte one=(byte) Integer.parseInt(a.substring(0, dot));
one=(byte) one << 4;
byte two=(byte) Integer.parseInt(a.substring(dot+1));
return (byte) one+two;
Also schieb ich die bits von one 4mal nach links und hab dann [c]0101 0000[/c] und addier dann two drauf und das würde dann [c]0101 0100[/c] ergeben, das was ich will.
Aber die zeilen 5 und 7 ergeben den Fehler "possible loss of precision". So genau kenn ich mich jetzt mit dem bit-shifting nich aus. Kann mir jemand erklären, wie ich das jetzt bewerkstelligen kann, dass aus [c]0101 0000 0000 0000 0100[/c] [c]0101 0100[/c] wird?
Danke schonmal fürs lesen&gedanken machen.