【问题标题】:C# binary writer and readerC# 二进制写入器和读取器
【发布时间】:2018-03-08 01:34:13
【问题描述】:

我遇到的问题是:

我正在使用二进制读取器读取一个字节数组来构造一个用于编辑文件的 windows 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。

【问题讨论】:

  • 你想做什么?

标签: c# binaryreader binarywriter


【解决方案1】:

我不确定您要做什么。但由于您的文本框只有一个字符 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();
}

【讨论】:

  • 我正在尝试制作一个最终用户可以编辑 ROM 文件的应用程序....因此,如果用户通过 GUI 选择某些标准,以下 7 个文本框将填充以下数据:从字节转换为字符串,以便它可以显示在文本框中。所以如果最终用户想要编辑易于编辑的玩家编号,只需通过文本框编辑 12 到 15 即可,但速度等属性仅由一个 B 表示,字节的第二个值表示另一个属性.我不确定如何编辑一个值,因为 Convert.ToByte 不能正确处理一个值。
  • @celtics33 你是什么意思它不起作用?我在回答中举了很多例子。你试过了吗?
猜你喜欢
  • 1970-01-01
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-07
相关资源
最近更新 更多