我有一段C语言的程序
size_t  Bytein;
FILE    *ParaFile;
sPAR    Para;        //自定义的结构体,里面均为double类型变量。UpdateData(TRUE);
ParaFile = fopen(m_PARAPATH,"rb");Bytein=fread(&Para,8,3,ParaFile);   //每次读取8个字节共读取3次,赋给结构体里的前3个变量。
fseek(ParaFile,2*8,SEEK_CUR);
Bytein=fread(&Para,8,3,ParaFile);
......现在需要把这段程序改成c#的, 下面是我写的部分代码,始终调试不出来结果。哪位大神懂的,麻烦帮我。非常感谢。
byte[] Bytein =new byte[423];
sPAR Para;FileStream myStream =new FileStream(workDir,FileMode.Open,FileAccess.Read);
BinaryReader myReader=new BinaryReader(myStream);myReader.Read(Bytein,0,8*3);
par.d1=?;    //后面不知道怎么写。
par.d2=;
par.d3=;myReader.BaseStream.Seek(2*8,SeekOrigin.Current);
myReader.Read(Bytein,0,8*3);
Par.e1=;
Par.e2=;
Par.e3=;

解决方案 »

  1.   


            public void test(FileStream fs) 
            {
                
                byte[] buffer = new byte[8];
                fs.Read(buffer, 0, 8);
                par.d1 = buffer;
                fs.Read(buffer, 0, 8);
                par.d2 = buffer;
                fs.Read(buffer, 0, 8);
                par.d3 = buffer;
            }
      

  2.   

    楼上的那样不行的。提示无法将类型byte[]隐式转换为double.
    而且我读的是二进制的文件,结构体里的变量最后输出的结果为正或负的小数(类似-1.153232e-02这种)
      

  3.   

           public void test(FileStream fs) 
            {
                 
                byte[] buffer = new byte[8];
                fs.Read(buffer, 0, 8);
                par.d1 = (double)buffer;
                fs.Read(buffer, 0, 8);
                par.d2 = (double)buffer;
                fs.Read(buffer, 0, 8);
                par.d3 =(double)buffer;
            }
      

  4.   

    4楼,感谢,你这样强制转换也是不行的。提示无法将类型byte[]转换为double。而且我读的是二进制的文件,应该用BinaryReader的。
      

  5.   

    谁知道你的二进制文件啥结构,隐式转换不行用Convert.ToDouble()试试