[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
A voir également:
- [Visual Basic] conversion fichier binaire
- Fichier bin - Guide
- Fichier epub - Guide
- Visual basic - Télécharger - Langages
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - 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