Convertir float[] byte[] pour float[] à nouveau
Donc ce que j'essaie de faire ici est d'obtenir un float[]
, de les convertir en byte[]
, l'envoyer à travers le réseau comme un datagramme paquet, puis le reconvertir en un byte[]
au terminal de réception.
Maintenant, je sais que je peux le convertir float[]
à byte[]
à l'aide de la getBytes[]
méthode. Mais je ne sais pas comment inverser la conversion.
Répondu gentiment ici: stackoverflow.com/a/19624671/534347
OriginalL'auteur brain56 | 2012-02-19
Vous devez vous connecter pour publier un commentaire.
Je pense que vous voulez faire usage de la
ByteBuffer
classe, qui aputFloat
etgetFloat
méthodes.voulais juste ajouter que si vous êtes à l'envoi de ce sur un réseau, vous devez explicitement spécifier un encodage au lieu de les laisser vous-même à la merci de la plate-forme d'encodage par défaut.
ByteBuffer a aussi le asFloatBuffer() la méthode dans le cas où vous ne voulez pas extraire les valeurs individuellement, vous pouvez chaîner les appels de méthode: ByteBuffer.wrap(someByteArray).asFloatBuffer().array() de passer d'un byte[] pour un float[]
Vous pouvez poster qu'une réponse.
OriginalL'auteur Dawood ibn Kareem
D'une autre façon... utiliser ByteArrayOutputStream/DataOutputStream pour la sortie
Utilisation ByteArrayInputStream/DataInputStream pour l'entrée
il n'est pas une méthode que writeFloat - votre code ne compile pas
merci pour le tuyau, j'ai mis à jour le code avec la bonne classe d'adaptateur en place.
OriginalL'auteur ricosrealm
Utilisation
Float.floatToIntBits()
pour extraire le peu de valeur de l'flotter comme un entier, puis utilisezBigInteger.toByteArray()
de faire unbyte[]
. Ce qui peut être inversé à l'aide de laBigInteger
constructeur qui prend unbyte[]
argument, puisFloat.intBitsToFloat()
.OriginalL'auteur Jim Garrison
C'est plus pour ma future référence qu'autre chose.
Peut être réduite à une seule ligne comme https://stackoverflow.com/a/44104399/322017.
OriginalL'auteur Nicolas
Expéditeur:
Récepteur:
OriginalL'auteur toinetoine
Vous devez utiliser le getFloat() et putFloat() les commandes dans la FloatBuffer de la ByteBuffer. En fait, vous devriez certainement faire simplement en raison de la vitesse pure. Et c'est une grande chose à comprendre pour les octets de manipulations. Vous pouvez également mélanger et assortir les données, et put et get. Tout cela est soutenu par le tampon d'octets. De sorte que la commune passe de l'envoi d'un tableau, vous devez envoyer à la taille de la matrice de trop.
Assurez-vous simplement d'allouer suffisamment d'octets pour stocker le tout dans la mémoire tampon. D'écrire des trucs, écrire quelques autres trucs etc. La compréhension de ce point rend les choses plus facile. Sur le revers de la médaille, nous faisons quasiment la même chose, si nous avons besoin d'un surplus de lire parce que nous ne savons pas comment big le tableau est, juste qu'il y en a un:
Et pour toutes les fonctionnalités, mais pas exactement partie:
OriginalL'auteur Tatarize
Octet de classe a une méthode floatValue();
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Byte.html#floatValue%28%29
OriginalL'auteur sriram