Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RichTextBox и Hex, отображение в hexademical 
V
    Опции темы
alhimik
Дата 28.7.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 20.7.2007

Репутация: 1
Всего: 1



Есть RichTextBox. Нужно загрузить бинарный файл и отобразить его в шестнадцатеричном формате.
Сначала была проблема как загурзить такой файл. Вот решение:
Код

   richTextBox1.LoadFile("c:\\file.exe", RichTextBoxStreamType.UnicodePlainText);

Но как представить его в удобном hex-формате?
Есть ли элегантное решение данного задания?
Можно естественно сделать FileStream и в цикле загружать содержимое файла побайтно, конвертить и записывать в простом текстовом формате как hex-числа в RichTextBox. Но это какое-то деревянное решение  smile 
PM ICQ   Вверх
alhimik
Дата 29.7.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 20.7.2007

Репутация: 1
Всего: 1



Деревянное решение:
Код

private string keyToHex(string keyPath)
        {
            byte[] key;
            using (FileStream fs = new FileStream(keyPath, FileMode.Open, FileAccess.Read))
            {
                key = new byte[fs.Length];
                fs.Read(key, 0, (int)fs.Length);
            }
            
            string st = "";
            for (int x = 0; x < key.Length; x++)
                st = st + String.Format("{0:x02} ", key[x]);
            return(st.ToUpper());
        }


Элегантное решение: никогда не подумал бы что метод BitConverter.ToString()  "Converts the numeric value of each element of a specified array of bytes to its equivalent hexadecimal string representation"!!!
Код

private string keyToHex(string keyPath)
        {
            byte[] key;
            using (FileStream fs = new FileStream(keyPath, FileMode.Open, FileAccess.Read))
            {
                key = new byte[fs.Length];
                fs.Read(key, 0, (int)fs.Length);
            }
            
            return (BitConverter.ToString(key).Replace('-',' '));
        }

Вот. Как говорится - сам себе волшебник  smile 

Это сообщение отредактировал(а) alhimik - 29.7.2007, 16:29
PM ICQ   Вверх
okaton
Дата 20.9.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



А если в файле числа предствавляются в 2 байтах например 2c 01 т.е. 300 как его прочитать, ведь побайтно будет 44 1, а нужно 300.
Есть ли способ такого чтения?
PM MAIL   Вверх
okaton
Дата 20.9.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 24.11.2006

Репутация: нет
Всего: нет



Отвечаю на свой вопрос

Код

                Int16[] shorts;
                using (BinaryReader br = new BinaryReader(File.OpenRead("c:\\csc.txt")))
                {
                    List<Int16> res = new List<short>();
                    for (Int32 i = 0; br.BaseStream.Position < br.BaseStream.Length; i++)
                        res.Add(br.ReadInt16());
                    shorts = res.ToArray();
                }


Это сообщение отредактировал(а) okaton - 20.9.2007, 16:32
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.