Float b = Bitconverter.Tosingle(byte[] value,start index)
3 Réponses :
valeur code> est juste le tableau d'octets qui contient le flotteur.
Le startindex code> 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. P>
Ceci fonctionne pour moi.
float val = (float)0.995; Byte[] arr = BitConverter.GetBytes(val); float myFloat = BitConverter.ToSingle(arr, 0);
Une autre façon d'écrire (flotteur) 0.995 code> est
0.995F code>.
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
Je n'ai jamais remarqué la méthode bitconverter.tostring (octet []) code> avant; c'est gentil.
@Jeppestignielsen Si vous souhaitez passer d'octets à la chaîne, vous devez utiliser system.text.encoding.default.getstring (octet []) code>
@Sealad Non, le tableau d'octets {0x52, 0xb8, 0x7e, 0x3f,} code> 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}")) code> Pour obtenir une représentation du contenu du tableau
A code>. Mais la méthode
bitconverter.tostring.tostring code> produit déjà cette représentation.
La balise code> flottante code> est de faire avec CSS ... Pourriez-vous donner une balise plus appropriée, telle que la langue que vous utilisez?