Relire en Vb un nombre float dans un fichier binaire

cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 - 27 janv. 2004 à 12:09
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 - 27 janv. 2004 à 14:49
Bonjour J'ai un fichier binaire qui contient des nombre de type "float" donc codé sur 32 byte .

Comment relire ce nombre en VB .

J'ai une solution qui reli bien les nombres si il sont supérieur à 1 mais impossible de relire si le nombre est par exemple égal à 0.207

J'ai la soution pour relire le binaire mais je ne sais pas le transformer pour Info

001111111 001101001 110100111 01111 -> 1.207

101111100 110010000 000101111 10101 devrait donner -0.223
Mais là je ne sais pas comment décomposer

Avez vous une solution ?

Merci Cuq

2 réponses

gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
27 janv. 2004 à 13:51
Bonjour,

Dans mon moteur 3d j'ai du incorporé une routine de conversion float (IEEE 754 32bits), ilse trouve a cette adresse "http://www.vbfrance.com/code.aspx?ID=18993". Telecharge le et c'est dans le module "basMathsIEEE754.bas".

Enfin, j'espere que c'est bien cela que tu recherches et je sais plus si dans cette version elle fonctionne dans les 2 sens (mais chez moi j'ai une version qui fonctionne dans les 2 sens). Alors tiend moi au courant si tu as des problèmes.

A++
[Gally Home Corp]
0
cuq Messages postés 345 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 21 mars 2008 2
27 janv. 2004 à 14:49
Super Merci ....

Ca a l'air d'etre bon . pour ceux qui liraient ce message J'ai utilisé la routine de Gally avec une autre fonction pour relire dans le fichier binaire le nombre ce aui donne :

Private Function FLoadFloat(NumFichier As Integer, ByRef Fseek As Long) As Double
Dim Byt_Recuperation(3) As Byte
Dim Str_Chaine_Lue As String
Dim Chaine_convertion As String
Dim I As Integer

' Relecture en binaire du fichier
For I = 0 To 3
Get NumFichier, Fseek + I, Byt_Recuperation(I)
Next I
'incrément la position de relecture dans le fichier binaire
Fseek = Fseek + 4

For I = 3 To 0 Step -1
'Convertion Hexa
Chaine_convertion = Hex$(Byt_Recuperation(I))
' Hex$ ne format pas le nombre sur deux charactère
' Je rajoute un "0" devant pour avoir en final mes 8 charactères Hexa
If Len(Chaine_convertion) <= 1 Then
Chaine_convertion = "0" + Chaine_convertion
End If
Str_Chaine_Lue = Str_Chaine_Lue + Chaine_convertion
Next I

'convertir
FLoadFloat = IEEE32toValue(Str_Chaine_Lue)
End Function
0
Rejoignez-nous