none
inverser en hex RRS feed

  • Question

  • bonjour,

    je voudrais de l'aide comment inverser des codes par exemple comme ceci :
    dans Textbox1.text = 3B9AC9FF et convertir pour inverser dans textbox2.text = FFC99A3B

    j'ai essayer ce code :

    TextBox2.Text = String.Concat(TextBox1.Text.Reverse())
    ça me donne avec ce code quand j'inverse dans textox2.text : FF9CA9B3

    comment avoir comme ceci dans textbox2.text = FFC99A3B ? Merci

    mercredi 23 juillet 2014 08:44

Réponses

  • Bonjour,

    Je vous ai donné le code avec la méthode d'extension à des fins d'utilisation ultérieures dans votre code. Toutefois, si vous n'en avez pas besoin,  le code se limite grosso modo à ceci  ^^

     for (int t = TextBox1.Text.Length - 2; t >= 0; t -= 2)  
           TextBox2.Text += TextBox1.Text.Substring(t, 2);
    

    Il y a sinon d'autres techniques à base de conversion LittleEndian et BigEndian ou des décalages d'octets mais cela demande plus de lignes code, des conversions vers du byte, int/ulong et présuppose que vos TextBox gèrent du texte de taille précise.

    Bien cordialement,


    Fabrice JEAN-FRANCOIS, Novencia TS

    • Marqué comme réponse zorro591 vendredi 25 juillet 2014 20:25
    vendredi 25 juillet 2014 16:08

Toutes les réponses

  • Bonjour,

    Je vous proposé une méthode d'extension pour qu'elle fonctionne comme la fonctionne Reverse, mais vous pouvez l'adapter pour une utilisation comme une fonction classique. En l'état, il vous suffit de créer une classe utilitaire comme ceci :

    using System;
    namespace MyExtension
    {
        static class StringExtension
        {
            public static string ReverseHex(this string str)
            {
                if (str.Length % 2 == 0)
                {
                    string result = "";
                    for (int t = str.Length - 2; t >= 0; t -= 2)  //Et oui, on procède à reculons :-D
                    {
                        result += str.Substring(t, 2);
                    }
                    return result;
                }
                else throw new ArgumentException("Le nombre hexadecimal doit être multiple de deux");
            }
        }
    }


    Puis dans votre code, il vous suffit de l'appeler comme cela :

    using System;
    using MyExtension;
    class Program
    {
        static void Main(string[] args)
        {
            string str = "3B9AC9FF";
            Console.WriteLine(str.ReverseHex());
            Console.Read();
        }
    }

    Bien cordialement,

    Fabrice JEAN-FRANCOIS, Novencia TS

    mercredi 23 juillet 2014 17:08
  • bonjour,

    Avez-vous une solution plus simple?

    Merci,cordialement

    jeudi 24 juillet 2014 10:54
  • Bonjour,

    Je vous ai donné le code avec la méthode d'extension à des fins d'utilisation ultérieures dans votre code. Toutefois, si vous n'en avez pas besoin,  le code se limite grosso modo à ceci  ^^

     for (int t = TextBox1.Text.Length - 2; t >= 0; t -= 2)  
           TextBox2.Text += TextBox1.Text.Substring(t, 2);
    

    Il y a sinon d'autres techniques à base de conversion LittleEndian et BigEndian ou des décalages d'octets mais cela demande plus de lignes code, des conversions vers du byte, int/ulong et présuppose que vos TextBox gèrent du texte de taille précise.

    Bien cordialement,


    Fabrice JEAN-FRANCOIS, Novencia TS

    • Marqué comme réponse zorro591 vendredi 25 juillet 2014 20:25
    vendredi 25 juillet 2014 16:08
  • bonjour,

    Merci Fabrice pour la réponse.

    voici votre code en vb.net:

     For t As Integer = TextBox1.Text.Length - 2 To 0 Step -2
                TextBox2.Text += TextBox1.Text.Substring(t, 2)
      next

    Cordialement,

    vendredi 25 juillet 2014 20:25