title: ToString("X") produces single digit hex numbers
body: <p>We wrote a crude data scope.</p>
  
  <p>(The freeware terminal programs we found were unable to keep up with Bluetooth speeds)</p>
  
  <p>The results are okay, and we are writing them to a Comma separated file for use with a spreadsheet. It would be better to see the hex values line up in nice columns in the RichTextBox instead of the way it looks now (Screen cap appended).</p>
  
  <p>This is the routine that adds the digits (e.g., numbers from <code>0</code> to <code>FF</code>) to the text in the RichTextBox.</p>
  
  <pre><code>  public void Write(byte[] b)
           {
               if (writting)
               {
                   for (int i = 0; i &lt; b.Length; i++)
                   {
                       storage[sPlace++] = b[i];
  
                       pass += b[i].ToString("X") + " ";  //// &lt;&lt;&lt;--- Here is the problem
  
                       if (sPlace % numericUpDown1.Value == 0)
                       {
                           pass += "\r\n";
                       }
                   }
               }
           }
  </code></pre>
  
  <p>I would like a way for the instruction <code>pass += b[i].ToString("X") + " ";</code> to produce a leading zero on values from <code>00h</code> to <code>0Fh</code></p>
  
  <p>Or, some other way to turn the value in byte <code>b</code> into two alphabetic characters from <code>00</code> to <code>FF</code></p>
  
  <p><img src="https://i.stack.imgur.com/iSvi6.png" alt="enter image description here"></p>
  
  <p>Digits on left, <code>FF 40 0 5</code> Line up nice and neatly, because they are identical. As soon as we encounter any difference in data, the columns vanish and the data become extremely difficult to read with human observation.</p>