none
C# string bytes RRS feed

  • Question

  • Bonjour, j'ai un problème, je souhaite convertir ma textbox1.Text en byte comme ceci :

    TextBox1.Text = "09"   -> Byte = "0x09"

    TextBox1.Text = "76" -> Byte = "0x76"

    TextBox1.Text = "6789" -> Byte = "0x67, 0x89"

    Dites moi ce que vous me conseillez de faire pour ça.

    dimanche 12 janvier 2014 14:45

Réponses

  • J'ai fait aautrement, je voulais récupere du texte et ce texte le mettre en byte ( pas une conversion ), mais j'ai trouvé une autre astuce, j'ai trouvé une autre offset et pris directement les bytes qui étaient écris.
    • Marqué comme réponse Aurel Bera mardi 14 janvier 2014 07:30
    lundi 13 janvier 2014 19:45

Toutes les réponses

  • // String en bytes
    byte[] toBytes = Encoding.ASCII.GetBytes(uneString);
    // Bytes en string
    string maString= Encoding.ASCII.GetString(toBytes);


    gabrielmongeon.com || LinkedIn

    lundi 13 janvier 2014 12:45
    Modérateur
  • Hello, je ne comprends pas la question. "0x09" n'est pas un bytes si? 

    suivant ce que je vois je serais tenté de faire un petit algo du style.

                string Text = "876";
                string separateur = ",0x";
                string res = string.Empty;
                int cpt = 0; // Compteur de passage dans la boucle
                if (Text.Length % 2 > 0) // complète les élements pour avoir toujours 2 chiffres 
                {
                    res += "0x0";// exemple 9 donne 0x09
                    cpt++;
                }
                else
                    res += "0x";// exemple 89 donne 0x89
                for (int i = Text.Length - 1; i >= 0; i--)
                {
                    if(cpt%2 > 0)
                        res += Text[Text.Length - 1 - i];
                    else
                        res += separateur + Text[Text.Length - 1 - i];
                    cpt++;
                }


    • Modifié Kjorel lundi 13 janvier 2014 13:49
    lundi 13 janvier 2014 13:48
  • En y repensant, le format 0x représente des données en format Hexadécimal, donc si c'est une question d'affichage, alors le plus simple c'est (source):

          CultureInfo ci = new CultureInfo("en-us");
    
          // Output integral values
          int integral = 8395;
          integral.ToString("X", ci));           // Displays "X: 0x20CB"
          Console.WriteLine();
    


    gabrielmongeon.com || LinkedIn

    lundi 13 janvier 2014 14:45
    Modérateur
  • J'ai fait aautrement, je voulais récupere du texte et ce texte le mettre en byte ( pas une conversion ), mais j'ai trouvé une autre astuce, j'ai trouvé une autre offset et pris directement les bytes qui étaient écris.
    • Marqué comme réponse Aurel Bera mardi 14 janvier 2014 07:30
    lundi 13 janvier 2014 19:45
  • Bonjour

    Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    mardi 14 janvier 2014 07:31
  • Ce que je voulais c'est faire ça :

    textBox1.Text = "010265"

    byte[] abc = new byte[] {0x01, 0x02, 0x65};

    Mais je n'ai eu aucune réponse là dessus donc j'ai fait autrement, j'ai pris directement une offset qui ciblait ce que je voulais en byte.

    Le problème est que si je veux le reproduire ( mon exemple ), dans le futur je ne pourrai pas car je n'ai pas eu de résolution là dessus.

    mercredi 15 janvier 2014 20:52
  • Dans ce cas je vous propose ce code:

        List<Byte> lst = new List<byte>();
    
                string str = textBox1.Text;
    
                while (str.Length !=0 )
                {
                    string dgi2 =   str.Substring(0, Math.Min(2, str.Length ));
                    
                    lst.Add(byte.Parse(dgi2, System.Globalization.NumberStyles.HexNumber));
              ///      textBox2.Text = textBox2.Text + dgi2 + "-----" + byte.Parse(dgi2, System.Globalization.NumberStyles.HexNumber)  + "\r\n"; 
                    if (str.Length == 1) break; 
                    str = str.Substring(2);
                  
                }
                byte []ret = lst.ToArray();

    Cordialement,

    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    jeudi 16 janvier 2014 08:35
  • Merci
    jeudi 16 janvier 2014 19:47