[Visual Basic] conversion fichier binaire
tassad
-
abs13 -
abs13 -
Bonjour,
je souhaite convertir un fichier binaire (extension: .ogf) en fichier excel. J'ai trouvé une fonction qui me permet de convertir les octets lus et elle marche.
Mon problème c'est que lorsque je lis mon fichier(par paquet de 32 bits) et que je lui demande de m'afficher la valeur correspondante il me retourne tout le temps: 0 alors je ne comprends pas la source du problème.
SVP est-ce que vous pouvez m'aider et merci d'avance pour le coup de main
je souhaite convertir un fichier binaire (extension: .ogf) en fichier excel. J'ai trouvé une fonction qui me permet de convertir les octets lus et elle marche.
Mon problème c'est que lorsque je lis mon fichier(par paquet de 32 bits) et que je lui demande de m'afficher la valeur correspondante il me retourne tout le temps: 0 alors je ne comprends pas la source du problème.
SVP est-ce que vous pouvez m'aider et merci d'avance pour le coup de main
Configuration: Windows XP Internet Explorer 6.0
3 réponses
-
Comme c'est sympa la vitesse à laquelle vous m'avez répondu. Comme vous me l'avez demandé voici le code que j'ai écrit(soyez indulgent si c'est n'importe quoi en fait c'est une mission ponctuelle je ne programme pas en VB en principe):
// Macro lisant le fichier et appellant la fonction de conversion des octetsPrivate Sub Conversion() Dim f As Integer Dim ligne As Byte Dim test As String f = FreeFile Open "C:\VBACyril\fich1.ogf" For Input As #f While Not EOF(f) test = CStr(ligne) Line Input #f, test1 Debug.Print "le string : " & test nombre = BinaryToDecimal(test, 32, True) Debug.Print "conversion : " & nombre Wend Close #f End Sub // Voici la fonction de conversion Public Function BinaryToDecimal(Binary As String, NbBits As Byte, Signed As Boolean) As Long Dim i As Byte BinaryToDecimal = 0 If NbBits <= 1 Or NbBits > 32 Then Exit Function If Len(Binary) > NbBits Or Len(Binary) > 32 Then Exit Function Binary = Right("00000000000000000000000000000000" & Binary, NbBits) If Signed = False Then For i = 0 To Len(Binary) - 1 BinaryToDecimal = BinaryToDecimal + Val(Mid(Binary, Len(Binary) - i, 1)) * 2 ^ i Next Else For i = 0 To Len(Binary) - 2 BinaryToDecimal = BinaryToDecimal + Val(Mid(Binary, Len(Binary) - i, 1)) * 2 ^ i Next i If Left(Binary, 1) = "1" Then BinaryToDecimal = -((2 ^ (NbBits - 1)) - BinaryToDecimal) End If End If End Function -
-
replace l'expression : open... for INPUT par open ... for BINARRY
et sa doit marcher ( si le reste de ton code est correcte )