2013-03-05 9 views
18

Napisaliśmy prosty zakres danych.ToString ("X") tworzy jednocyfrowe liczby heksadecymalne

(freeware programy terminalowe znaleźliśmy były w stanie nadążyć z prędkością Bluetooth)

Wyniki są w porządku, i piszemy je przecinkami oddzielone plik do użytku z arkusza kalkulacyjnego. Lepiej byłoby zobaczyć wartości szesnastkowe wyrównane w ładnych kolumnach w RichTextBox, zamiast w sposób, w jaki teraz wygląda (dołączono zaślepkę ekranu).

Jest to procedura dodająca cyfry (np. Numery od 0 do FF) do tekstu w 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"; 
        } 
       } 
      } 
     } 

Chciałbym drogę do dyspozycji pass += b[i].ToString("X") + " "; do wyprodukowania zero na wartości od 00h do 0Fh

Lub jakiś inny sposób, aby włączyć wartość bajtu b do dwóch znaków alfabetycznych z 00 do FF

enter image description here

Cyfry na lewo FF 40 0 5 Ustaw ładnie i starannie, ponieważ są identyczne. Gdy tylko napotkamy różnicę w danych, kolumny znikają, a dane stają się niezwykle trudne do odczytania dzięki obserwacji człowieka.

Odpowiedz

39

Użyj ciąg formatu composite:

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

Dokumentacja na MSDN, Standard Numeric Format Strings ma przykładów.

+0

Super. Geniusz. +1 i odpowiedź. Dzięki –

+4

@ User.1 '0.ToString (" X2 ")' tworzy '00'. "2" oznacza liczbę znaków wyjściowych (wypełnienie z '0's). – Oded

+2

Otrzymuję tę odpowiedź, ale nie rozwiązuje problemu użycia czcionki, która nie jest monospaced, takich jak Consolas lub Courier New. – Tim