C#二进制编写器和读者

时间:2018-03-08 01:34:13

标签: c# binaryreader binarywriter

我遇到的问题是:

我正在使用二进制阅读器读取一个字节数组来构建一个用于编辑文件的窗口gui,例如我正在读取以下字节数组: 123cbb75

//read the first 4 bytes from 0x36A2
byte[] buffer = br.ReadBytes(4);

Array.Reverse(buffer);

Encoding enc8 = Encoding.UTF8;
data = enc8.GetString(buffer);

data = (BitConverter.ToInt32(buffer, 0).ToString("X8"));
textBox1.Text = data; //reads the full string of hex
                      //values 123CBB75-- first 4 bytes
textBox2.Text = data.Substring(0, 2);//reads 12

textBox3.Text = data.Substring(2, 1);//reads 3
textBox4.Text = data.Substring(3 ,1);//reads C
textBox5.Text = data.Substring(4, 1);//reads B
textBox6.Text = data.Substring(5, 1);//reads B
textBox7.Text = data.Substring(6, 1);//reads 7
textBox8.Text = data.Substring(7, 1);//reads 5
br.Dispose();

我可以轻松编辑第一个字节,因为它有两个整数表示 使用Convert.ToByte(从文本框中编辑字符串并将其写回二进制文件)

问题是:如何编辑文本框中的奇异值,然后它可以使用二进制文件(如文本框3或4)正确地写回值。我不能使用Convert.ToByte因为它是一个单数或字母图。

将数据写回文件时,

bw.Write(Convert.ToByte(textBox3.Text, 16)); //output不正确,如果我想将3更改为5。

1 个答案:

答案 0 :(得分:0)

我不确定你要做什么。但由于您的文本框只有一个字符string,因此您可以这样做:

bw.Write(Convert.ToByte(textBox3.Text[0], 16));

这里有更多代码将字节写入文件,然后将其读回:

var a = Convert.ToByte('a');
var one = Convert.ToByte("1", 16); // If you want to provide the base

using (var writer = new BinaryWriter(File.Open("Path", FileMode.Create)))
{
    writer.Write(a);
    writer.Write(one);
    writer.Write("X"[0]);
}

using (var reader = new BinaryReader(File.Open("Path", FileMode.Open)))
{
    var aa = (char)reader.ReadByte();
    Console.WriteLine(aa);
    var oneOne = (char)reader.ReadByte();
    var x = (char)reader.ReadByte();
}
相关问题