有个Hex文件如下::203FC0000000000000000000000000000000000000000000000000000000000000000000E1
:203FE0000000000000000000000000000000000000000000000000000000000000000000C1
:20400000EB079000D0011510011E50B8801F8ED85888160800882E3801880E0000883602B9
:2040200000883E1000881E14009A8D0207888A1608008A2E38018A0E00008A3602008A3E7D
:2040400010008A1E1400A036011FCBFFB800008EC0BBC00326FF2FFFB50A8A0E0000B800EE
:20406000008EC0BBC40326FF2FFFFFFFFFFFFFFF1EB9801F8ED9C8010000C41E0C0026F673
:2040800087F2102074122EC41EC43B26C41F26803F097404804E0806C41E0C0026F68723E3此为一电梯的的芯片配置文件(速度,高度,层站等)还有一个地址对照表.现任务做一个Windows界面:可以随意更改电梯的配置,也就是Hex文件的读写,请问如何实现..关键是如果读写各位大大不吝赐教
:203FE0000000000000000000000000000000000000000000000000000000000000000000C1
:20400000EB079000D0011510011E50B8801F8ED85888160800882E3801880E0000883602B9
:2040200000883E1000881E14009A8D0207888A1608008A2E38018A0E00008A3602008A3E7D
:2040400010008A1E1400A036011FCBFFB800008EC0BBC00326FF2FFFB50A8A0E0000B800EE
:20406000008EC0BBC40326FF2FFFFFFFFFFFFFFF1EB9801F8ED9C8010000C41E0C0026F673
:2040800087F2102074122EC41EC43B26C41F26803F097404804E0806C41E0C0026F68723E3此为一电梯的的芯片配置文件(速度,高度,层站等)还有一个地址对照表.现任务做一个Windows界面:可以随意更改电梯的配置,也就是Hex文件的读写,请问如何实现..关键是如果读写各位大大不吝赐教
public string HexNumberToString(string InputString)
{
int len = InputString.Length >> 1;
byte[] str = new byte[len];
for (int i = 0; i < len; i++)
{
string temp = InputString.Substring(i << 1, 2);
if (temp.Length > 0)
{
str[i] = byte.Parse(temp, System.Globalization.NumberStyles.HexNumber);
}
}
return Encoding.Default.GetString(str);
}
MemoryStream _ValueMem = new MemoryStream();
int _Count = textBox1.Text.Length / 2; if (textBox1.Text.Length % 2 != 0) throw new Exception("错误的数据"); for (int i = 0; i != _Count; i++)
{
_ValueMem.WriteByte(Convert.ToByte(textBox1.Text.Substring(i * 2, 2), 16));
}
File.WriteAllBytes(@"C:\1.xml", _ValueMem.ToArray());
{
}给一个地址,就能更改该地址对应的值
byte[] b = new byte[fs.Length];
fs.Read(b, 0, fs.Length); //将文件内容复制到b数组
fs.Close();//修改b[i] 指定i值就可以修改值了ChangeValue(int Address,byte[] bs)
{
for(int i=0;i<bs.Length;++i)
{
b[Address + i] = bs[i];
}
}
FileStream fs2 = new FileStream("new.hex", FileMode.Create); //新建文件
fs2.Write(b,0,b.Length); //写文件
fs2.Close(); //关闭文件
FileStream FS = new FileStream("abc.hex", FileMode.Open);
FS.Postion = 10;//这个C++中的Seek()一样。