Lecture d'un fichier hexa par hexa [Résolu]

Signaler
Messages postés
107
Date d'inscription
dimanche 27 juin 2004
Statut
Membre
Dernière intervention
12 novembre 2006
-
cs_CanisLupus
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
-
bonjour a tous ceux qui lirons ce message et merci d'avance si vous trouvez une solution.

je voudrai lire un fichier exemple avec 30303030 dedans soit 1111 en ascII.

je voudrai lire les hexa du debut j'usqu'a la fin du fichier tout
en les mettant un par un dans une variable X pour les traiter.

mon prob est que ne c'est pas comment incrementer le debut de la lecture. (la fourchette de lecture d'un fichier)
voila ce que moi j'ai fai
cela fonctionne mais je ne ve pas ouvrir tous le fichier d'un coups
pour le mettre dans (a) je veux les LIRE un par un.

Open (FILE) For Binary As #1
LNG = FileLen(FILE)
a = Input(LNG, #1) "comment incrementer la lecture 1 par 1??
For I = 1 To LNG
X = hex(Mid(a, I + 1, 1))
"traitement divers sur X"
Next I

BYE:
close #1
merci encore a ceux qui pourrons m'aider (c'est pas super bien expliquer je sais lol) BYE

9 réponses

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
11
Si tu ne veux pas charger tous le fichier en mémoire d'un coup, tu peux essqyer ça :

Dim a As String * 2
Dim X As String
Dim FILE As String
Dim LNG As Long
Dim i As Long

FILE = "c:\temp\essai.dat" ' le chemin et le nom de ton fic
LNG = FileLen(FILE)

Open (FILE) For Random As #1 Len = 2

For i = 1 To LNG / 2
Get #1, i, a
tu choisi
X = a ' là tu as la valeur hexa lue par ex '30'
ou
X = Chr(a) ' là tu as le caractère représenté par la valeur lue
Next i

Cordialement

CanisLupus
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
63
Salut bobo91
Tu étais bien parti, mais tu t'es compliqué : Lis d'une traite le fichier et fais ton traitement sur le String que tu vas récupérer.
Je suppose que les codes hexa que tu récupères sont tous par couple (de 00 à FF) :
Open (FILE) For Binary As #1
LNG = FileLen(FILE)
Texte = String(LNG, " ")
Get #1, , Texte
Close #1
For I = 1 to LNG Step 2
Chiffre = Chr(Val("&H" & Mid(Texte, I, 2)))
Next I


Vala
Jack
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
je voulais juste siggnaler que le code de Jack ne s'applique que pour de ptits fichiers.....

en effet, pour des fichiers plus important, il est difficile de tout placer en mémoire (vive le Streaming)

voila, c'est tout ;)

(va falloir que je m'habitues a la nouvelle photo de Jack !!)
Messages postés
107
Date d'inscription
dimanche 27 juin 2004
Statut
Membre
Dernière intervention
12 novembre 2006

merci a tous oui en effet c pour de gros fichier donc en memoire dans une variable c fait beaucoup donc je vai rester sur la solution a canislupus et je garde com mem les autre dans ma tete. merci infiniment a tous.bye
Messages postés
107
Date d'inscription
dimanche 27 juin 2004
Statut
Membre
Dernière intervention
12 novembre 2006

ta solution est bonne sauf qu'il y a un petit hic:
j'ai fait un fichier text comportant 123456
et il me sort : 12;34;56
moi je voudrais qu'il me sorte 1;2;3;4;5;6
merci encore une petite modif a faire mais je ne sais pas ou
et je ne comprend pas le "Dim a As String * 2" ke ve dire le *2
merci beaucoup.
Messages postés
107
Date d'inscription
dimanche 27 juin 2004
Statut
Membre
Dernière intervention
12 novembre 2006

c'est bon j'ai trouver la solution voici le code exact que je voulai :

Dim a As String * 1
Dim FILE As String

FILE = "g:\BOBO.txt"
LNG = FileLen(FILE)

Open (FILE) For Random As #1 Len = 1
For i = 1 To LNG
Get #1, i, a
X = a
Debug.Print X
Next i

(je voudrai juste une explication sur le Dim a As String * 1 prk (*1)????

merci merci merci
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
ce 1 est la taille de ta chaine de caractères.......

ca permet de reserver une taille fixe...
Messages postés
107
Date d'inscription
dimanche 27 juin 2004
Statut
Membre
Dernière intervention
12 novembre 2006

lu merci beaucoups
et pour faire de l'hexa j'ai fais hex(asc(a))
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
11
Tout à fait,
Scuse pour l'erreur ds le code mais je pensais d'après ta question de départ que ton fichier était en hexa.
Mais tu t'en es très bien sorti tout seul.

Pourquoi le string * 1 ? Ben, tout simplement parce que cette méthode d'ouverture et de lecture de fichier impose ça. Sinon, ça marche pas.
Le get lit autant de caractères que peut contenir la taille du buffer (a ds l'ex).

Cordialement

CanisLupus