我是C#的新手,我正在尝试创建一个可以读写Hex文件的应用程序。我看了一些很棒的教程,但最终产品只在文本框中打印了非常少量的十六进制代码。这是我的代码
private void button3_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
textBox1.Text = openFileDialog1.FileName;
textEditor.Text = File.ReadAllText(textBox1.Text);
}
BinaryReader br = new BinaryReader(File.OpenRead(textBox1.Text));
byte[] buffer = br.ReadBytes(4);
Array.Reverse(buffer);
textEditor.Text = BitConverter.ToInt32(buffer, 0).ToString("X");
br.Dispose();
}
我希望它显示文件中的所有文本,而不仅仅是第一个文本。
答案 0 :(得分:0)
试试这个。它将引导您完成整个文件。请注意textEditor.Text上的+=
,我认为这就是你想要的。
我假设您正在读取每个字节,然后将其转换为2位十六进制字符,然后附加它。但是,如果我错误解释并且您希望一次读取多个字节,那么我一次只能更容易阅读。
private void button3_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
textEditor.Text = "";
using (BinaryReader br = new BinaryReader(File.Open(openFileDialog1.FileName, FileMode.Open)))
{
int pos = 0;
int length = (int)br.BaseStream.Length;
int numBytesToRead = 1;
int numHexCharsPerLine = 5;
int numCharsRead = 0;
while (pos < length)
{
byte[] buffer = br.ReadBytes(numBytesToRead);
for (int i = 0; i < buffer.Length; i++)
{
textEditor.Text += buffer[i].ToString("X2");
textEditor.Text += " "; // Will put a space between each hex character
if (numCharsRead % numHexCharsPerLine == 0 && numCharsRead > 0)
{
textEditor.Text += "\r\n";
}
numCharsRead++;
}
pos += numBytesToRead;
}
}
}
}