Je veux savoir comment faire une fonction qui transforme une chaine de caractères hexadécimaux contenu dans un fichier texte enregistrer sous c: (le fichier nommé FichierHexa.Txt ) en caractères binaires avec Visual Basic VB.6
Merci
Version imprimable
Je veux savoir comment faire une fonction qui transforme une chaine de caractères hexadécimaux contenu dans un fichier texte enregistrer sous c: (le fichier nommé FichierHexa.Txt ) en caractères binaires avec Visual Basic VB.6
Merci
peux tu préciser ce que tu entends par caractères binaires ?
convertir "3C" (hexa) en "111100" (binaire) par exemple ?
oui c ça
tu pourrai pas en dire plus sur ton probléme...? c'est quoi ces suites de chiffres hexa..
voir :faq:
Comment effectuer des conversions vers le Décimal, l'Hexadécimal ou le Binaire ?
;)
Bonjour bbil
J'ai une chaîne de caractères hexadecimal enregistrée sous c:\FichierHexad.Txt
Mon travail consiste à :
- lire le fichier texte (j'utilise la language VB.6)
J'ai fait cette étapeCode:
1
2
3 Open "c:\FichierHexad.Txt" For Input Access Read As #1 ...... Close #1
- Convertir cette chaîne (qui se trouve sous c:) en binaire puis enregistrer le résultat dans un 2ème fichier texte nommé FichierBinaire.
Donc j'ai besoin de votre aide dans cette 2ème étape
Merci
ton problème est il juste un problème de programmation ou aussi un problème d'algorithme ? En clair sais tu "traduire à la main" un nombre hexadécimal en un nombre binaire ?
Une solution sans utiliser le code ascii
qui renvoie une chaine vide si la chaine passée ne représente pas un nombre en hexaCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Function HexToBin(NombreHex As String) As String Dim tHex, tBin Dim i As Integer, j As Integer Dim Binaire As String Dim Trouve As Boolean Binaire = "" NombreHex = UCase(NombreHex) tHex = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F") tBin = Array("0000", "0001", "0010", "0011", "0100", "0101", "0110", _ "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111") For i = 1 To Len(NombreHex) Trouve = False For j = 0 To 15 If tHex(j) = Mid(NombreHex, i, 1) Then Binaire = Binaire & tBin(j) Trouve = True Exit For End If Next j If Not Trouve Then HexToBin = "": Exit Function Next i HexToBin = Binaire End Function
en fait le truc .. c'est qu'il va falloir attendre que minola, ce décide à tout nous dire ... ce qu'il entend par "caractères binaires avec Visual Basic VB.6" , je suis pas vraiment sur qu'il attende en sortie un chaîne composée de 0 et de 1 ..., d'ailleurs si c'était le cas mon lien vers la :faq: un peu plus haut aurai suffit amplement ...
alors minola .. montre nous des exemples de contenu de tes 2 fichiers...!
[troll]
Tu sais, en ayant regardé la solution proposée dans la faq, on pourrait aussi dire que je l'ai copiée, car elle repose sur le même principe.
Si cela doit t'offenser, je te demanderai de regarder attentivement le forum et tu t'apercevras que, pour peu que la question initiale soit un peu technique, les ajouts des uns et des autres sont, à de très rares exceptions près, des compléments d'infos à des réponses déjà données. Nul n'a la paternité d'un algo, me semble-t'il, ni, et surtout, de toutes ses variantes possibles. Outre le fait que ta fonction, telle quelle, n'est utilisable qu'en déclarant i (plantage à la compilation), et qu'en saisissant une valeur dans un inputbox (ce qui amènera presqu'inévitablement une question de minola), elle ne teste pas la validité de la saisie, et plante si la chaine saisie ne représente pas une valeur hexadécimale.
Si j'ai donné cette solution, c'est parce, pour moi, utiliser le code ascii est un moyen détourné, et que cette façon de faire ne repose pas sur la méthode que l'on utiliserait à la main. Elle est donc plus difficile à appréhender par un néophyte. Mais, pour moi, la plus limpide est celle de la faq, qui établit la correspondance claire entre les valeurs hexa et binaires.
J'ose croire qu'on ne va pas établir des droits d'auteur sur les forums...[/troll]