Преобразование байтовых данных в строковый вывод, как в шестнадцатеричном редакторе.

Я ищу метод, который будет возвращать строковое представление байтовых данных, как это может сделать шестнадцатеричный редактор. Он должен иметь один параметр, который равен byte[] и возвращает string, как показано ниже: Как и должно быть

Этот метод должен обрабатывать escape-символы, нули и правильно выравнивать текст. Я хочу использовать его в Debug.WriteLine(). Пожалуйста, помогите мне с этим! Спасибо!

Обновление: хорошо. Спасибо всем, ребята. Вот ссылка на готовое решение http://illegalargumentexception.blogspot.fr/2008/04/c-file-hex-dump-application.html Дарин Димитров


person Nazar Grynko    schedule 01.05.2012    source источник
comment
Я думаю, вам нужно немного уточнить. У вас есть два ответа, которые, хотя и являются правильными, отвечают на разные вопросы. Вы пытаетесь получить шестнадцатеричный дисплей или обычный текст из байта []? Оба?   -  person vcsjones    schedule 01.05.2012
comment
@vcsjones string representation of byte data. myne анализирует байт и возвращает строку.   -  person Royi Namir    schedule 01.05.2012


Ответы (2)


Вы можете использовать метод ToString:

public static string ToString(byte[] buffer)
{
    return BitConverter.ToString(buffer);
}
person Darin Dimitrov    schedule 01.05.2012
comment
Да. Но мне нужно представление ASCII после каждых 16 байтов. Как это. 41 41 41 41 41 41 41 41 41 41 41 00 41 41 41 41 ААААААААААА.АААА 59 59 59 00 59 59 59 59 59 59 59 59 59 59 59 53 59 ГГГ.ГГГГГГГГГГГСЫ - person Nazar Grynko; 01.05.2012
comment
Попробуйте следующее: illegalargumentexception.blogspot.fr/2008/04 / - person Darin Dimitrov; 01.05.2012
comment
@DarinDimitrov это твой блог? - person Royi Namir; 01.05.2012
comment
Это то, что я искал! Благодарю вас! - person Nazar Grynko; 01.05.2012

попробуй это :

  byte[] b1 = ...

  string h = System.Text.Encoding.UTF8.GetString(b1);
person Royi Namir    schedule 01.05.2012
comment
Это не то, что нужно. Он вернет только одну простую строку, в которой все байты будут преобразованы в ее символьное представление. Пример: «\r� �\0\a �(C��\a9��s�p��T?�m.K�9 ��y ΪM|” - person Nazar Grynko; 01.05.2012
comment
@NazarGrynko попробуйте с ASCII. эта команда должна вернуть строковое представление байта. попробуйте с System.Text.Encoding.ASCII.GetString(b1);. - person Royi Namir; 01.05.2012
comment
@NazarGrynko изменить на ASCII - person Royi Namir; 01.05.2012
comment
Да, я знаю. Но мне нужно, чтобы он был отформатирован, как на скриншоте, который я публикую. Каждая строка должна состоять из 16 символов HEX (b1[0].ToString("X2")), а не из 16 символов char (это то, что возвращает Encoding.UTF8. GetString и Encoding.ACSII.GetSting). И в конце строки ‘\n’ - person Nazar Grynko; 01.05.2012