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 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 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 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 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 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
4 déc. 2015 à 20:46
Convertir alors.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 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 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 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 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 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 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 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