Konvertieren Sie float [] in Byte [] in float []

8

Also versuche ich hier ein float[] zu bekommen, es in byte[] umzuwandeln, es als Datagrammpaket durch das Netzwerk zu senden und es dann wieder in ein byte[] am empfangenden Terminal umzuwandeln.

Jetzt weiß ich, dass ich float[] in byte[] konvertieren kann, indem ich die Methode getBytes[] verwende. Aber ich weiß nicht, wie ich die Konvertierung umkehren soll.

    
brain56 19.02.2012, 04:36
quelle

6 Antworten

9

Ich denke, Sie möchten die Klasse ByteBuffer nutzen, die putFloat und getFloat Methoden hat.

    
Dawood ibn Kareem 19.02.2012, 04:43
quelle
5

Eine andere Möglichkeit ... Verwenden Sie ByteArrayOutputStream / DataOutputStream für die Ausgabe

%Vor%

Verwenden Sie ByteArrayInputStream / DataInputStream für die Eingabe

%Vor%     
ricosrealm 19.02.2012 05:26
quelle
2

Verwenden Sie Float.floatToIntBits() , um den Bitwert des Gleitkommas als Ganzzahl zu extrahieren, und verwenden Sie BigInteger.toByteArray() , um byte[] zu erstellen. Dies kann umgekehrt werden, indem der Konstruktor BigInteger verwendet wird, der ein Argument byte[] und dann Float.intBitsToFloat() verwendet.

    
Jim Garrison 19.02.2012 04:48
quelle
0

Absender :

%Vor%

Empfänger :

%Vor%     
Antoine Dahan 19.02.2016 16:06
quelle
0

Sie müssen die Befehle getFloat () und putFloat () im FloatBuffer des ByteBuffers verwenden. In der Tat sollten Sie dies einfach wegen der schieren Geschwindigkeit tun. Und es ist eine großartige Sache für Byte-Manipulationen zu verstehen. Sie können die Daten auch mischen und abgleichen und sie nach Bedarf einfügen und abrufen. Alles wird vom Byte-Puffer unterstützt. Damit das Senden eines Arrays gelingen kann, müssen Sie auch die Größe des Arrays senden.

%Vor%

Sie müssen nur sicherstellen, dass Sie genügend Bytes reservieren, um alles im Puffer zu speichern. Schreibe ein paar Sachen, schreibe ein paar andere Sachen usw. Das Verständnis dieses Punktes macht die Dinge viel einfacher. Auf der anderen Seite machen wir grundsätzlich dasselbe, obwohl wir ein zusätzliches Lesen benötigen, weil wir nicht wissen, wie groß das Array ist, nur dass es eins gibt:

%Vor%

Und für die volle Funktionalität, obwohl nicht gerade ein Teil davon:

%Vor%     
Tatarize 22.05.2017 03:30
quelle
-1

Die Byte-Klasse hat eine Methode floatValue ();

Ссылка

    
sriram 19.02.2012 04:40
quelle

Tags und Links