Lecture d'un fichier Hexa

cs_SEB73460 Messages postés 271 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 29 novembre 2022 - 28 juil. 2007 à 17:52
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 28 juil. 2007 à 22:46
Bonjour,

Voila,
je lis un fichier Hexadecimal (.Hex) dans un listview qui comporte 16 colonnes de 2 bits chacune
Mon probleme est que si l'octet est "1A" il est affiché correstement par contre si c'est "01" il est affiché "1"
Peut-on faire en sorte que les zero soient pris en compte ?
Mes remerciements
A+

Mon code :

OpenFileDialog1.ShowDialog()

'Lecture du fichier

Dim fs
As FileStream =
New FileStream(OpenFileDialog1.FileName, FileMode.Open)

'16 est le nombre de colonnes de l'affichage

Dim pages
As
Integer = fs.Length \ 16

'Pour chaque ligne entiŠre (16 bytes)

For A
As
Integer = 0
To pages - 1 

'Boucle pour le comptage en Hexa de la colonne d'adresses

'For compteur = 0 To fs.Length 

'Compte en Hexa dans la colonne d'adressesli = ListView1.Items.Add(Hex(compteur))

'Remplit la ligne avec 16 Octets de 2 bits chacun "00" "1F"li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

li.SubItems.Add(Hex(fs.ReadByte()))

Next

'Si il reste une ligne incomplŠte, moins de 16 octets de la position en cours … la fin du fichier

If fs.Length
Mod 16 > 1
Thenli = ListView1.Items.Add(Hex(fs.ReadByte()))

End
If

'Pour chaque octet suppl‚mentaire de la ligne incomplŠte jusqu'… la fin du fichier

For i = 1
To (fs.Length
Mod 16) - 1li.SubItems.Add(Hex(fs.ReadByte()))

Next

'Affiche le nom et l'extension du fichier dans textboxTextBox5.Text = System.IO.Path.GetFileName(OpenFileDialog1.FileName)

2 réponses

ciberrique Messages postés 589 Date d'inscription lundi 25 août 2003 Statut Membre Dernière intervention 18 juillet 2010 1
28 juil. 2007 à 21:49
Je pense que ton probleme vient de l'utilisation de la fonction Hex, pour contourner ton probleme tu peux essaye de mettre sous cette forme :

Dim TempString As String


TempString = Hex(fs.ReadByte())


If Len(TempString) < 2 Then
     TempString = "0" & TempString


End If


li.SubItems.Add (TempString)

Voila
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
28 juil. 2007 à 22:46
Tiens regarde ce topic sur la convertion Hexa :

http://www.vbfrance.com/infomsg_CONVERSION-INT-VERS-HEX-AVEC-FORMATAGE_988564.aspx#6
---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #   
0
Rejoignez-nous