Hex редактор *.bin файлов - C#
Формулировка задачи:
Добрый день ! Нужно сделать свой редактор bin файлов .
Подскажите:
Как правильно загрузить файл через openFileDialog.
Считать в массив байт .
И вывести в формате : номер строки , 16 байт через пробел в хекс виде , 16 байт через пробел в ASCII.
Заранее спасибо всем откликнувшимся
Листинг программы
- 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;
- //
- }
как теперь массив разделить по 16 байт и вывести ?
Листинг программы
- 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;
- }
- }
- }
- }
Решение задачи: «Hex редактор *.bin файлов»
textual
Листинг программы
- 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]);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д