как мне отобразить шестнадцатеричные данные в хорошо выровненном (например, в табличном формате) в приложении Windows

#c# #winforms

#c# #winforms

Вопрос:

Я хочу отобразить содержимое bbbb.txt файл в шестнадцатеричном формате richTextBox2 .

 case 0:
{
     groupBox3.Enabled =false;
     label3.Enabled = false;
     label4.Enabled = false;
     btn_CompareRec.Enabled = false;
     btn_CompareRef.Enabled = false;
     byte[] mybytes = File.ReadAllBytes("C:\bbbb.txt");
     string bb = "";
     int i = 0;
     int numBytesToRead = 200;
     while (numBytesToRead > 0)
     {
         if (mybytes[i].ToString("X") != "20")
         {
              bb = bb   mybytes[i].ToString("X")   "";
              // bb.PadLeft(10, '-');
         }
         i = i   1;
         numBytesToRead = numBytesToRead - 1;
     }
     richTextBox2.Text = bb;
}
  

Он отображается внутри текстового поля, но как мне отобразить его в табличном формате? (как и в любом шестнадцатеричном редакторе)

Комментарии:

1. Используйте шрифт фиксированной ширины ( en.wikipedia.org/wiki/Monospaced_font )

2. Вы хотите, чтобы они были табличными для каждого «пробела» и «Новой строки»? Если да, то какой будет максимальная длина для одного слова?

3. Митч, это хорошо, но помоги мне внедрить это в мой код.

4. 0.00 1.00000000 0.00 1.00000000 0.10 1.10517092 0.00 1.00000000 0.10 1.10517092 0.00 1.00000000 шестнадцатеричные данные должны быть в таком же формате, как и базовые адреса

5. @rocky: вы должны добавить форматированный пример того, чего вы пытаетесь достичь в своем вопросе. «Хорошо выровненный» формат на самом деле не слишком специфичен.

Ответ №1:

Попробуйте это;

Добавьте else часть в условие If

 if (mybytes[i].ToString("X") != "20")
{
    bb = bb   mybytes[i].ToString("X");                 
}
else
{
    //EDIT
    bb .PadLeft(8, '0'); // considering 64 will  be maxsize

    bb = bb   " ";
}
  

Комментарии:

1. привет, это работает, но мне нужно добавить дополнительные настройки

2. означает, что я должен добавить отступы между каждым символом, он должен отображаться так с равным расстоянием — 000012 00002F 00023 00004D

3. вы поймете лучше, если увидите эту ссылку home.gna.org/bless/bless-manual/ch05s03.html смотрите стандартное представление смещения в шестнадцатеричном формате ASCII

4. Известно ли вам количество максимальных непрерывных байтов между двумя пробелами?

5. Предположим, если мы выберем 5 как максимум, то оно должно быть одинаковым до конца. Таким образом, мы можем выбрать любое максимальное значение, но оно должно быть одинаковым до конца.