Konvertieren von float[] byte[] float[] wieder
Also, was ich versuche zu tun ist, erhalten eine float[]
, konvertieren Sie es in byte[]
, senden Sie über das Netzwerk als ein Datagramm Paket und konvertieren Sie es dann zurück, um einen byte[]
am empfangenden terminal.
Jetzt weiß ich, ich kann konvertieren float[]
zu byte[]
mithilfe der getBytes[]
Methode. Aber ich weiß nicht, wie Umgekehrt die Konvertierung.
- Beantwortet schön hier: stackoverflow.com/a/19624671/534347
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie wollen nutzen Sie die
ByteBuffer
Klasse, die hatputFloat
undgetFloat
Methoden.Anderen Art und Weise... nutzen ByteArrayOutputStream/DataOutputStream für die Ausgabe
Verwenden ByteArrayInputStream/DataInputStream für die Eingabe
Verwenden
Float.floatToIntBits()
zum extrahieren der bit-Wert des float als integer, dann verwenden SieBigInteger.toByteArray()
zu machenbyte[]
. Dies kann rückgängig gemacht werden über dieBigInteger
Konstruktor, einebyte[]
argument, und dannFloat.intBitsToFloat()
.Dies ist mehr für meine zukünftige Referenz als alles andere.
Reduziert werden kann, um eine einzelne Zeile wie https://stackoverflow.com/a/44104399/322017.
Sender:
Empfänger:
Müssen Sie mit der getFloat() und putFloat () - Befehle in den FloatBuffer der ByteBuffer. In der Tat, sollten Sie unbedingt dies tun, einfach wegen der schieren Geschwindigkeit. Und es ist eine große Sache, zu verstehen, für byte-Manipulationen. Sie können auch mischen und entsprechen die Daten und die put-und get es, wie gebraucht. Alle davon wird unterstützt durch die byte-Puffer. Also die gemeinsamen happening senden ein array benötigen, müssen Sie senden die Größe des Arrays zu.
Du nur darauf achten, dass genügend bytes zum speichern alles in den Puffer. Einige Sachen geschrieben, schreiben einige andere Sachen etc. Das Verständnis dieser Punkt macht die Dinge viel einfacher. Auf der anderen Seite tun wir im Grunde das gleiche, obwohl, benötigen wir eine zusätzliche Lesen, weil wir nicht wissen, wie groß das array ist, sondern nur, dass es eins:
Und für die volle Funktionalität, obwohl Sie nicht genau Teil dieser:
Byte-Klasse verfügt über die Methode floatValue();
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Byte.html#floatValue%28%29