有一二进制文件格式如下:
    
    typedef struct tagGridDataFileHeader
        {
            short nDataType;  //资料类型,2个字节
            CTime tSourceDataStartTime;//源数据的开始时间信息,对于预报结果文件,该值是最后一个实测数据的开始时间信息,4个字节
            CTime tSourceDataEndTime;//源数据的结束时间信息,对于预报结果文件,该值是最后一个实测数据的开始时间信息,4个字节
            int nMinutes;//预警时间长度信息(分钟),对于实测数据,该值为0,4个字节
            float fGridDataLeftLongitude;//左边的经度(度),4个字节
            float fGridDataTopLatitude;//上边的纬度(度),4个字节
            float fGridDataCenterLongitude;//中心经度(度),4个字节
            float fGridDataCenterLatitude;//中心纬度(度),4个字节
            float fGridDataDeltaX;//横向格距(KM),4个字节
            float fGridDataDeltaY;//纵向格距(KM),4个字节
            int nGridDataXNum;//横向格点数,4个字节
            int nGridDataYNum;//纵向格点数,4个字节
            short nType;//产品的类型,2个字节,0为实测数据的格点化产品,1为预警产品
            float fTemp[10];//备用数据,40个字节        
        }我现在想把它一一读出显示在文本中,我试按以下写,却写不下去,该怎么写?谢谢了!
            
            string StrTxtFileName = @"F:\DFPP200909221610.DAT";
            FileStream fs = new FileStream(StrTxtFileName, FileMode.Open);
            BinaryReader rdr = new BinaryReader(fs);
           
            Console.WriteLine(rdr.ReadUInt16().ToString());//读nDataType数据
            //读时间数据???tSourceDataStartTime
            //fs.Position += 10;
                      fs.Dispose();
            fs.Close();
            rdr.Close();

解决方案 »

  1.   

    m_begintime=CTime(2004,1,1,0,0,0,-1);//参数依次为year,month,day,hour,minite,second
    m_endtime =CTime::GetCurrentTime();//当前时间
      

  2.   

            public void Run() {
                string path = @"F:\DFPP200909221610.DAT";
                FileStream fs = File.Open(path , FileMode.OpenOrCreate , FileAccess.Read);
                byte[] datacatch;
                using (BinaryReader br=new BinaryReader(fs)) {
                    datacatch=br.ReadBytes((int)fs.Length);
                }            Console.WriteLine(Encoding.Default.GetString(datacatch));//读nDataType数据 
                //读时间数据???tSourceDataStartTime 
                //fs.Position += 10; 
            }//先做到这步
      

  3.   

    知道字节长度了还不好搞?
    读出来:byte[] bytes=new byte[88];//文件读取出来的字节放在这里然后可以分别处理
    如:
    short m = BitConverter.ToUInt16(bytes, 0);//从数组索引0处开始读2个字节转换成uint16
       
    float f = BitConverter.ToSingle(bytes, 33);//从33字节处读取4个字节转换成单浮点数
    标准的值类型都能用BitConverter读取
    至于Ctime要知道其定义才可以(关于字节排列先后顺序的)你试试吧
      

  4.   

    路过,顶了!
    关键是cTime的类型信息。如果知道可以计算数据个数,利用循环按照字节读取,存储或显示!