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
51
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