自動車コンピューティングの目的でバイナリ ファイルを変更および操作するプログラムを C# で作成しています... 特定のアドレスの 16 進値をユーザーに表示しようとすると、問題が発生します (変更するプログラムを取得しました)。ファイル全体を HEX 形式でテキスト ボックスに書き込むようにプログラムを取得しましたが、何らかの理由で 1 つの値を表示しようとすると問題が発生します。これがコードです。ファイル全体を表示するために使用されたセクションをコメントアウトしたことがわかります...
// Opens the stream, notice that this case only has.Read appended to it, we
// don't want to harm the original binary file
using (FileStream stream = new FileStream(chosenFile, FileMode.Open, FileAccess.Read))
{
// returns the number of bytes in the file...
size = (int)stream.Length;
// Initializes the array in which to store the data bytes...
data = new byte[size];
// Writes the binary data to a particular file...
// In this case the data[] array
stream.Read(data, 0, size);
progressBar1.Maximum = size;
// Prints the original binary file...
while (printCount < size)
{
int i = data[printCount];
// Formats the data to the same format as the hex editor...
// not sure exactly why it works...
// string h = i.ToString("x2");
// richTextBox1.Text += h + "-";
if (printCount1 == 15)
{
// richTextBox1.AppendText(Environment.NewLine);
printCount1 = 0;
}
if (stream.Position == 32)
{
pinByte1 = i.ToString("x2");
}
if (stream.Position == 33)
{
pinByte2 = i.ToString();
// Now stores the reversed location of the two,
// convert to decimal for pin...
pin = pinByte2 + pinByte1;
}
printCount++;
printCount1++;
progressBar1.Increment(1);
textBox1.Text = "Please wait, reading original BIN...";
}
textBox1.Clear();
textBox1.Text = "Your file has been read, proceed to unlock...";
textBox2.Text += pinByte1;
textBox3.Text += pinByte2;
textBox6.Text += pin;
}