Comment faire pour convertir un float dans un tableau d'octets, et vice-versa?

Je suis en train de convertir un float dans une primitive byte[] et vice versa:

public byte[] floatToByteArray(final float value)
{
    return new byte[]
    {
        (byte) (value >> 56),
        (byte) (value >> 48),
        (byte) (value >> 40),
        (byte) (value >> 32),
        (byte) (value >> 24),
        (byte) (value >> 16),
        (byte) (value >> 8),
        (byte) (value)
    };
}

Curieusement, quand j'ai essayer de déplacer le nouvellement allouée byte[] de retour dans une float, le résultat n'est que de la foutaise.

Cependant, il semble que le même algorithme fonctionne très bien lorsque j'utilise la primitive long type de données en argument à la place.

public byte[] longToByteArray(final long value)
{
    return new byte[]
    {
        (byte) (value >> 56),
        (byte) (value >> 48),
        (byte) (value >> 40),
        (byte) (value >> 32),
        (byte) (value >> 24),
        (byte) (value >> 16),
        (byte) (value >> 8),
        (byte) (value)
    };
}
  • comment avez-vous testé la fonction ?
  • avez-vous ajouter f à la fin de l'essai, les données float2ByteArray (3.4 f)
  • Je commence à aimer C maintenant. char* floatAsByte = (char*)&myFloat;
  • Les flotteurs sont en 32 bits, donc obtenir l'int bits docs.oracle.com/javase/6/docs/api/java/lang/... et utiliser une méthode similaire comme vous l'avez fait pour longtemps, mais au lieu de l'int.
InformationsquelleAutor bantini | 2013-01-31