Compter le nombre hexadecimale [Résolu]

Signaler
Messages postés
31
Date d'inscription
mardi 10 juin 2014
Statut
Membre
Dernière intervention
14 août 2017
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,
voici en image :


Voici mon code :
Try
            Dim fs As New FileStream(FilePath, IO.FileMode.Open, IO.FileAccess.ReadWrite, IO.FileShare.ReadWrite)
            Dim reader As New BinaryReader(fs)
            reader.BaseStream.Position = &H85F4
            Do
                hexnomber = BitConverter.ToString(reader.ReadBytes(4), 0, 4).Replace("-", "")
                If hexnomber = "0006FEC3" Then Exit Do
                reader.BaseStream.Position += 4
                Label2.Text = hexnomber.Length - 7
            Loop
            fs.Close()
            reader.Close()
        Catch exception1 As Exception
            ProjectData.SetProjectError(exception1)
            Dim exception As Exception = exception1
            Interaction.MsgBox(Conversion.ErrorToString, MsgBoxStyle.ApplicationModal, Nothing)
            ProjectData.ClearProjectError()
        End Try
    End Sub


Par rapport a mon code comment compte de nombre hexadécimale(voir image)?
Merci de votre compréhension,

10 réponses

Messages postés
2427
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
6 mai 2021
137
Bonjour
Je pense que notre ami désire compter le nombre de blocs de 4 octets à partir d'un offset déterminé par lui sans compter les blocs de 4 octets à "00000000" et arrêter le comptage à une valeur bien précise pour ce bloc de 4 octets

 Dim fs As New FileStream(Filepath, IO.FileMode.Open, IO.FileAccess.ReadWrite, IO.FileShare.ReadWrite)
Dim reader As New BinaryReader(fs)
Dim pointeur As Integer = convert.toint32("85F4",16) ' départ position comptage
Dim compteur As Integer = 0
Dim chn As String
Do
reader.BaseStream.Position = pointeur
chn = BitConverter.ToString(reader.ReadBytes(4), 0, 4).Replace("-", "")
If chn = "3234372C" Then Exit Do
compteur = compteur + 1
pointeur = pointeur + 8
Loop
fs.Close()
reader.Close()


En sortie compteur contient la valeur que tu attends . Dans ton cas il devrait contenir 7

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. 
Messages postés
15928
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 mai 2021
544
Bonsoir qu'est que tu veux dire par compter?
Bonsoir,

compter le nombre hexadécimale :
exemple: 000780F4 = 1 ,000780F5 = 2 , 0006E00A = 3 .....etc et il s'arret quand il y a en hex (0006FEC3).
Messages postés
15928
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 mai 2021
544
Convertir alors.
Messages postés
15928
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 mai 2021
544
ha non 06E00F ça ne fait pas 1.
Messages postés
15928
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 mai 2021
544
Dans ta boucle Do...Loop, tu incréments un compteur.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,
Demande peu claire. Compter et totaliser sont deux choses différentes.
Que veux-tu exactement compter, hacker591 ?
Sois précis, s'il te plait.
Bonjour,

Merci vb95 pour votre réponse mais gras à toi. j'ai trouver la solution a mon problème.
Dim fs As New FileStream(FilePath, IO.FileMode.Open, IO.FileAccess.ReadWrite, IO.FileShare.ReadWrite)
            Dim reader As New BinaryReader(fs)
            reader.BaseStream.Position = &H95FC
            Dim compter As Integer = 0
            Do
                hexnomber = BitConverter.ToString(reader.ReadBytes(4), 0, 4).Replace("-", "")
                If hexnomber = "7FFFFFFF" Then Exit Do
                reader.BaseStream.Position += 4
                compter = compter + 1
                Label2.Text = compter 
            Loop
            fs.Close()
            reader.Close()
Messages postés
15928
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 mai 2021
544
Bonjour, puisque tu as trouvé la réponse, tu peux passer le sujet résolu.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Résolu ... résolu ... je veux bien,
Mais je serais fort étonné que le code qu'il a montré lui ait permis de compter ce qu'il veut compter .
Mais bon ... Il a mis RESOLU.
Messages postés
15928
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 mai 2021
544
Bonjour UC, en gros il compte le nombre de paquet de 8 octets (quelque soit leur valeur) à partir d'une position et jusqu'à trouver un mot de 4 octets de fin.

Avec le peu d'infos fournie c'est ce que j'en avais déduis, là
http://codes-sources.commentcamarche.net/forum/affich-10057402-compter-le-nombre-hexadecimale#5
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour, Whismeril,
Je crois qu'il ne veut pas compter les paquets de 0
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Tiens ...
Le hasard a voulu que je "tombe" à l'instant sur ceci :
http://www.developpez.net/forums/d1556951/dotnet/langages/vb-net/lire-superieur-0-a/
Qui montre au passage comment hacker591 joue au ping-pong entre deux sites pour faire avancer son schmilblick ...