Cherche toute les codes hexa et le remplace

babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 - 23 juil. 2009 à 17:19
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 - 5 août 2009 à 20:11
bonjour,

J'espère ne pas mettre trompé de section. si c'est le cas, je vous présente mes excuses.

je recherche une fonction qui permmette de remplacer une chaine d'offset en une autre dans un fichier hexadécimal de plusieurs Ko (environ 200)

je m'explique : j'ai un fichier ...0102cd15252541452141166464644e64f646cd156abababab456646179764cd156111...
Je voudrais que ma fonction cherche tous les cd15 et les remplacent par des fffe.

Voilà, merci d'avance.

3 réponses

babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
23 juil. 2009 à 17:21
Ok, je me suis trompée de section... mes excuses...
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
24 juil. 2009 à 10:15
Salut

Je suppose que ta chaine est un tableau de byte.
dans ce cas, tu dois pouvoir faire un truc du genre :

for (int i = 0; i < monTableau.Length - 1; i++)
{
    if (monTableau[i] == (byte)0xcd)
    {
        if (monTableau[i+1] == (byte)0x15)
        {
            monTableau[i] = (byte)0xff;
            monTableau[i+1] = (byte)0xfe;
        }
    }
}


Tu peux également replacer i++ par i+=2 si besoin.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
5 août 2009 à 20:11
Bonjour,

Après des jours et des jours (des semaines?) de recherche, j'ai trouvé un autre chemin grâce à :





private string HexString2Ascii(string hexString)
        {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i <= hexString.Length - 2; i += 2)
            {
                sb.Append(Convert.ToString(Convert.ToChar(Int32.Parse(hexString.Substring(i, 2), System.Globalization.NumberStyles.HexNumber))));
            }
            return sb.ToString();
        }
            



Seulement voilà pour passer par là il faut que je convertisse mes données HEX en ASCII, j'utilise la fonction ci-dessus.
L'ASCII qui en sort n'est pas tout à fait bon, il manque des "." par exemple.
De plus, après avoir exécuté le code ci-dessous, mon fichier édité à l'éditeur hexadécimal n'a pas les bons offsets de modifié, d'ailleurs tout est modifié "bizarrement".

// hexsearch : offsets recherchés
// hexreplace : offsets de remplacement

string ConvertedHexSearch = HexString2Ascii(hexsearch);
            string ConvertedHexReplace = HexString2Ascii(hexreplace);

StreamReader reader = new StreamReader(OFD1.FileName);
            string content = reader.ReadToEnd();
            reader.Close();
            string crotte = Regex.Replace(content, ConvertedHexSearch, ConvertedHexReplace);
            StreamWriter writer = new StreamWriter(OFD1.FileName);
            writer.Write(crotte);
            writer.Close();



Qu'est ce qui cloche svp?
Comment puis-je transformer mes données Hex en bon ASCII "éditeur hexadecimal"?

Merci.
0
Rejoignez-nous