Compter le nombre hexadecimale

Résolu
hacker591 Messages postés 34 Date d'inscription mardi 10 juin 2014 Statut Membre Dernière intervention 26 janvier 2022 - 4 déc. 2015 à 19:54
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 6 déc. 2015 à 13:51
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

vb95 Messages postés 3474 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 7 mai 2024 169
Modifié par vb95 le 5/12/2015 à 00:21
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. 
1
Whismeril Messages postés 19047 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 mai 2024 656
4 déc. 2015 à 20:32
Bonsoir qu'est que tu veux dire par compter?
0
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).
0
Whismeril Messages postés 19047 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 mai 2024 656
4 déc. 2015 à 20:46
Convertir alors.
0
Whismeril Messages postés 19047 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 mai 2024 656
4 déc. 2015 à 20:47
ha non 06E00F ça ne fait pas 1.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Whismeril Messages postés 19047 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 mai 2024 656
4 déc. 2015 à 20:50
Dans ta boucle Do...Loop, tu incréments un compteur.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 déc. 2015 à 20:53
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.
0
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()
0
Whismeril Messages postés 19047 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 mai 2024 656
5 déc. 2015 à 07:29
Bonjour, puisque tu as trouvé la réponse, tu peux passer le sujet résolu.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2015 à 07:31
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.
0
Whismeril Messages postés 19047 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 25 mai 2024 656
6 déc. 2015 à 08:33
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2015 à 09:58
Bonjour, Whismeril,
Je crois qu'il ne veut pas compter les paquets de 0
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 déc. 2015 à 13:51
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 ...
0
Rejoignez-nous