-2
votes

Byte [] à flotter Conversion

Float b = Bitconverter.Tosingle(byte[] value,start index)

1 commentaires

La balise flottante est de faire avec CSS ... Pourriez-vous donner une balise plus appropriée, telle que la langue que vous utilisez?


3 Réponses :


0
votes

valeur est juste le tableau d'octets qui contient le flotteur.
Le startindex signifie le décalage avec lequel la fonction de conversion commencera à lire les 4 octets qui font un flotteur à partir du tableau passé. Dans votre cas, il devrait juste être 0.


0 commentaires

0
votes

Ceci fonctionne pour moi.

float val = (float)0.995;
Byte[] arr = BitConverter.GetBytes(val);

float myFloat = BitConverter.ToSingle(arr, 0);


1 commentaires

Une autre façon d'écrire (flotteur) 0.995 est 0.995F .



0
votes

BitConverter.toTIONner (valeur d'octet [], int startindex)

paramètres strong> p>

  • valeur em>
    Byte []
    Un tableau d'octets. Li>
  • startindex em>
    Int32
    La position de départ dans valeur em>. Li> ul> blockQuote>

    Le tableau Vous obtenez n'est que 4 octets longs, vous avez besoin de 4 octets pour créer le seul poste afin que la position unique devrait être 0 - tous les autres vous donnent des exceptions: P>

           0.9950000         52-B8-7E-3F
    
    0 is valid:
    0.995
    
    1 is invalid: System.ArgumentException: Destination array is not long enough to copy all the 
                  items in the collection. Check array index and length.
       at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
       at System.BitConverter.ToSingle(Byte[] value, Int32 startIndex)
       at Program.Main() in d:\Windows\Temp\cowicrki.0.cs:line 13
    2 is invalid: System.ArgumentException: Destination array is not long enough to copy all the 
                  items in the collection. Check array index and length.
       at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
       at System.BitConverter.ToSingle(Byte[] value, Int32 startIndex)
       at Program.Main() in d:\Windows\Temp\cowicrki.0.cs:line 13
    3 is invalid: System.ArgumentException: Destination array is not long enough to copy all the 
                  items in the collection. Check array index and length.
       at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
       at System.BitConverter.ToSingle(Byte[] value, Int32 startIndex)
       at Program.Main() in d:\Windows\Temp\cowicrki.0.cs:line 13
    


3 commentaires

Je n'ai jamais remarqué la méthode bitconverter.tostring (octet []) avant; c'est gentil.


@Jeppestignielsen Si vous souhaitez passer d'octets à la chaîne, vous devez utiliser system.text.encoding.default.getstring (octet [])


@Sealad Non, le tableau d'octets {0x52, 0xb8, 0x7e, 0x3f,} représente une valeur du type de point flottant à une précision unique; Il ne représente pas une chaîne de texte. Je ne vois pas comment cette méthode pourrait avoir un sens. Normalement, je ferais des choses comme string.join ("-", a.select (val => $ "{VAL: x2}")) Pour obtenir une représentation du contenu du tableau A . Mais la méthode bitconverter.tostring.tostring produit déjà cette représentation.