Frage zu Bitshift

Hallo,

ich habe eine Frage zum Bitshiften, ich komm nicht weiter... :-(

Ich hab hier ein Array:

Java:
byte[] bytes = {85, 20}

Nun will ich aus diesem Array einen float-Wert herausbekommen, nämlich 7509.0. Bis jetzt habe ich das mit der Java-Funktion

Java:
java.nio.ByteBuffer.wrap...

gelöst, was ich aber gerne händisch machen möchte.

Kann mir jemand einen Tipp geben wie das geht?

Danke & Lg
buzz
 
Man braucht 4 bytes um einen float zu generieren!

Was passt denn am ByteBuffer nicht?

Achja Google hilft dir hier auch gern weiter! HIER
 
Falls du es nicht mit dem bytebuffer machen willst, kannst du die bytes auch shiften um einen int zu bekommen und dessen bits schließlich direkt als float interpretieren (Float.intBitsToFloat)
Java:
int bits = (bytes[0] & 0xFF) 
            | ((bytes[1] & 0xFF) << 8) 
            | ((bytes[2] & 0xFF) << 16) 
            | ((bytes[3] & 0xFF) << 24);
float value= Float.intBitsToFloat(bits);

edit:
ggf. musst du die endianess anpassen:
Java:
int bits = (bytes[3] & 0xFF) 
            | ((bytes[2] & 0xFF) << 8) 
            | ((bytes[1] & 0xFF) << 16) 
            | ((bytes[0] & 0xFF) << 24);
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben