Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383

Hex редактор *.bin файлов

26.05.2017, 20:02. Показов 4573. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день ! Нужно сделать свой редактор bin файлов .
Подскажите:
Как правильно загрузить файл через openFileDialog.
Считать в массив байт .
И вывести в формате : номер строки , 16 байт через пробел в хекс виде , 16 байт через пробел в ASCII.

Заранее спасибо всем откликнувшимся
C#
1
2
3
4
5
6
7
8
9
10
11
12
 private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "bin files (*.bin)|*.bin|All files (*.*)|*.*";
 
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
            FileStream fs = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read);
            
            long nBytesRead = fs.Length;
//
}
Добавлено через 2 часа 34 минуты
как теперь массив разделить по 16 байт и вывести ?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace Hex
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "bin files (*.bin)|*.bin|All files (*.*)|*.*";
 
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
            FileStream fs = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read);
            long nBytesRead = fs.Length;
            byte[] bytes = new byte[fs.Length];
            fs.Read(bytes, 0, bytes.Length);
            fs.Close();
            string hex = BitConverter.ToString(bytes);
            hex = hex.Replace("-", " ");
            richTextBox1.Text = hex;
 
        }
    }
            }
        }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.05.2017, 20:02
Ответы с готовыми решениями:

Перевести Hex to Bin
Осноная задача это HexToBin. Не могу сделать так что бы считывало байты по строчно с определенного символа и это все дублировалось с...

Арифметичиские операции над Bin,Oct,Hex
Прошу помочь в следующих вопросах: 1) Как конвертировать строку, в которой записано число в десятичной системе в 2-ую, 16-ую,8-ую.(Это...

Чем отличаються файлы проекта хранящиеся в папке bin от файлов из obj
ЧЕМ?

4
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383
27.05.2017, 21:04  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace Hex
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
           
        }
 
        private void Open_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "bin files (*.bin)|*.bin|All files (*.*)|*.*";
 
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
            System.IO.FileInfo file = new System.IO.FileInfo(openFileDialog.FileName);
            long size = file.Length;
            byte[] shc = new byte[size];
            using (FileStream fs = new FileStream(openFileDialog.FileName, FileMode.Open))
            {
                fs.Read(shc, 0, Convert.ToInt32(size));
            }
            dataGridView1.Rows.Clear();
            long kolStrok = size / 16;
            for (long i = 0; i < kolStrok; i++)
            {
                string id = (i * 16).ToString("X") + ":";
                id = id.PadLeft(7, '0');
                dataGridView1.Rows.Add(id);
            }
            long c = 0;
            for (int i = 0; i < kolStrok; i++)
            {
                for (byte b = 1; b < 17; b++)
                {
                    dataGridView1[b, i].Value = string.Format("{0:X2}", shc[c]); // Заполнение HEX поля 
                    c++;
                }
            }
            c = 0;
            for (int i = 0; i < kolStrok; i++)
            {
                for (byte b = 18; b < 34; b++)
                {
                    dataGridView1[b, i].Value = Convert.ToChar(shc[c]); // Заполнение ASCII поля
                    c++;
                }
            }
        }
            
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            int s = 20; // Ширина столбцов с 1 по 16
            int s2 = 12; // Ширина столбцов с 18 по 34
            dataGridView1.Columns[0].Width = 50;
 
            for (int i = 1; i < 17; i++)
            {
                dataGridView1.Columns[i].Width = s; // Присвоение ширины
                dataGridView1.Columns[i + 17].Width = s2; // Присвоение ширины
                ((DataGridViewTextBoxColumn)dataGridView1.Columns[i]).MaxInputLength = 2; // Ограничение на ввод 2 знаками
                ((DataGridViewTextBoxColumn)dataGridView1.Columns[i + 17]).MaxInputLength = 1; //Ограничение на ввод 1 знаком
            }
 
            dataGridView1.Columns[17].Width = 10;
 
            dataGridView1.AllowUserToAddRows = false;
            dataGridView1.AllowUserToDeleteRows = false;
            dataGridView1.AllowUserToResizeColumns = false;
            dataGridView1.AllowUserToResizeRows = false;
 
        }
 
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
 
        }
 
        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
          //  dataGridView1[b, i].Value = string.Format("{0:X2}", shc[c]);
        }
    }
    }
Вот такой редактор пока получился .
Как связать между собой ячейки Hex области и Ascii области ?
Т.е что бы поменяв значение в одной изменилось в другой ?
А так же столкнулся с такой проблемой , что уменьшая ширину колонн уходит значение в .... , а если сделать макс допустимое то расстояние между значениями оч большое ( не красиво ) .
Миниатюры
Hex редактор *.bin файлов  
0
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383
12.12.2017, 18:25  [ТС]
Народ помогите . Не могу победить dataGridView. Очень далеко находятся значения друг от друга . А при уменьшении ячейки вон что творит .
Миниатюры
Hex редактор *.bin файлов   Hex редактор *.bin файлов  
0
Эксперт .NET
 Аватар для Rius
13111 / 7672 / 1674
Регистрация: 25.05.2015
Сообщений: 23,386
Записей в блоге: 14
12.12.2017, 20:25
Посмотрите как устроен Be.HexEditor (.NET C# hex edit control)
1
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 383
12.12.2017, 20:45  [ТС]
Читал ! не подходит (((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2017, 20:45
Помогаю со студенческими работами здесь

BIN файл (EEPROM) как найти текст в HEX редактор
Здравствуйте! Это прошивка электронного блока управления автомобильным двигателем написана для процессора ST10F280 в ней, помимо самой...

Как преобразовать hex в ascii (HEX редактор)
Написал: String ^in; openFileDialog1-&gt;Filter = &quot;hex Files|*.hex&quot;; openFileDialog1-&gt;Title = &quot;Select a hex File&quot;; ...

BIN ->HEX HEX->BIN
Собственно задание дал препод: 1. Получить HEX данные из файла .exe и сохранить hex код в 1.txt 2. Данный HEX преобразовать в бинарный...

HEX to BIN
Преобразовать введенное с клавиатуры шестнадцатеричную цифру в двоичное представление и отобразить ее на экране. Плиз кто может...

Конвертер из hex в bin
Подскажите как в C++ Builder написать конвертер из hex в bin?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru