[Visual Basic] conversion fichier binaire
Fermé
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
A voir également:
- [Visual Basic] conversion fichier binaire
- Visual basic - Télécharger - Langages
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
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 octets
// Macro lisant le fichier et appellant la fonction de conversion des octets
Private 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
Montre nous ton code, on verra ce qu'on peut faire ;)