web-dev-qa-db-fra.com

ToString ("X") produit des nombres hexadécimaux à un chiffre

Nous avons écrit une étendue de données brutes.

(Les programmes de terminal gratuits que nous avons trouvés étaient incapables de suivre la vitesse Bluetooth)

Les résultats sont corrects et nous les écrivons dans un fichier séparé par des virgules pour une utilisation avec un tableur. Il serait préférable de voir les valeurs hexadécimales alignées dans les colonnes Nice de la RichTextBox au lieu de ce à quoi elles ressemblent maintenant (écran en cache ajouté).

Il s'agit de la routine qui ajoute les chiffres (par exemple, les chiffres de 0 à FF) au texte de RichTextBox.

  public void Write(byte[] b)
         {
             if (writting)
             {
                 for (int i = 0; i < b.Length; i++)
                 {
                     storage[sPlace++] = b[i];

                     pass += b[i].ToString("X") + " ";  //// <<<--- Here is the problem

                     if (sPlace % numericUpDown1.Value == 0)
                     {
                         pass += "\r\n";
                     }
                 }
             }
         }

Je voudrais un moyen pour que l'instruction pass += b[i].ToString("X") + " "; produise un zéro non significatif sur les valeurs de 00h à 0Fh

Ou bien, une autre façon de transformer la valeur de l'octet b en deux caractères alphabétiques de 00 à FF

enter image description here

Chiffres à gauche, FF 40 0 5 Alignez Nice et proprement, car ils sont identiques. Dès que nous constatons une différence dans les données, les colonnes disparaissent et les données deviennent extrêmement difficiles à lire avec l'observation humaine.

20
User.1

Utilisez une chaîne composite format:

pass += b[i].ToString("X2") + " ";

La documentation sur MSDN, Chaînes de format numérique standard contient des exemples.

42
Oded

"X" est un spécificateur de format. Il convertit un nombre en une chaîne de chiffres hexadécimaux.

int _abc = 123456;
Console.WriteLine(_abc.ToString("X"));

Cela vous donnera 1E240 comme sortie

(1E240 est la valeur hexadécimale de 123456)

1