有个Hex文件如下::203FC0000000000000000000000000000000000000000000000000000000000000000000E1
:203FE0000000000000000000000000000000000000000000000000000000000000000000C1
:20400000EB079000D0011510011E50B8801F8ED85888160800882E3801880E0000883602B9
:2040200000883E1000881E14009A8D0207888A1608008A2E38018A0E00008A3602008A3E7D
:2040400010008A1E1400A036011FCBFFB800008EC0BBC00326FF2FFFB50A8A0E0000B800EE
:20406000008EC0BBC40326FF2FFFFFFFFFFFFFFF1EB9801F8ED9C8010000C41E0C0026F673
:2040800087F2102074122EC41EC43B26C41F26803F097404804E0806C41E0C0026F68723E3此为一电梯的的芯片配置文件(速度,高度,层站等)还有一个地址对照表.现任务做一个Windows界面:可以随意更改电梯的配置,也就是Hex文件的读写,请问如何实现..关键是如果读写各位大大不吝赐教

解决方案 »

  1.   

    怎么看着像16进制如果是的话
        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);  
          } 
      

  2.   

    显示数据byte[] _Data =File.ReadAllBytes(@"C:\1.xml");textBox1.Text = BitConverter.ToString(_Data).Replace("-", "");保存数据
                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());
      

  3.   

    LS两位..我头晕.是一个后缀为.hex的文件我想要一个这样的方法
      

  4.   

     ChangeValue(string Address,string Value)
    {
          
    }给一个地址,就能更改该地址对应的值
      

  5.   

    用程序转成HEX文件的,这样就可以直接手工编辑了
      

  6.   

    FileStream fs = new FileStream("old.hex",FileMode.Open);  //打开原始文件
    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();  //关闭文件
      

  7.   

    不行吧...我所说的Addrees是一个物理地址哦....
      

  8.   

     这个算了..问下C#如何直接读写二进制文件,比如在C++中有个Seek() 在C#怎么实现?
      

  9.   


    FileStream FS = new FileStream("abc.hex", FileMode.Open);
    FS.Postion = 10;//这个C++中的Seek()一样。