代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

您现在的位置是:首页>_C#

C#读二进制文件的有关问题,

发布时间:2019-08-18浏览(435)

    C#读二进制文件的问题,急,求助!
    我有一个二进制文件.里面存储的数据如下:(只贴出前几例)
    struct   datarec   /*   长度=100   byte   */       项序
    {   unsigned       char   baoformat;                     1   (瞬时报有)
        unsigned       char   station;                         2   (瞬时报有)
        unsigned       char   stationname[6];           3   (瞬时报有)
        unsigned       int     rec_time;                       4   (瞬时报有)
        unsigned       long   rec_date;                       5   (瞬时报有)
        unsigned       int     wd2dd;                             6   (瞬时报有)
        unsigned       int     wd2df;                             7(瞬时报有)
        unsigned       int     wd10dd;                           8(瞬时报有)
        unsigned       int     wd10df;                           9(瞬时报有)
        unsigned       int     wd10maxdd;                   10  
        unsigned       int     wd10maxdf;                   11
        unsigned       int     wd3smaxdd;                   12
    }
    数据说明:
    第   1项   资料类型(baoformat)   长=1   byte;   其中:字符“   0”为正点报告,“   1”为瞬时报告(其中瞬时报告只有正点观测数据   ,见“正点资料格式”注明有的项目)。其他码用户不能使用。

    第   2项   自动站编号(station);   长=1   byte;数值为:   0-99等;  
    第   3项   自动站站号(stationname[6]);长=6   byte;     例:   59287,G1001等;
    第   4项   资料时间(rec_time)   长=2   byte;   用时分表示;如:2230为   22时30分;
    第   5项   资料日期(rec_date)   长=4   byte;   用年月日表示,如:980103   为98年1月3日;
    第   6项   二分钟风向(wd2dd);长=2   byte;0-360   以度方位表示;
    第   7项   二分钟风速(wd2df);长=2   byte,单位为m/s   ,扩大10倍,15.6m/s=156
    第   8项   十分钟风向(wd10dd);数值说明同第   6项;
    第   9项   十分钟风速(wd10df);数值说明同第   7项;
    第10项   时十分钟最大风速时的风向(wd10maxdd);数值说明同第   6项;
    第11项   时十分钟最大风速(wd10maxdf);数值说明同第   7项;
    第12项   时瞬时极大风速时的风向(wd3smaxdd);数值说明同第   6项;


    现在我从二进制文件里面读出来的数据如下:
    48   0   71   49   48   48   52   0   0  
    很显然,第一数和数据说明就对应不上,我的代码如下:
    代码放在一个button事件里面.
      FileStream   fs   =   new   FileStream(FileUpload1.PostedFile.FileName,   FileMode.Open,   FileAccess.Read);
                    FileInfo   info   =   new   FileInfo(FileUpload1.PostedFile.FileName);
                    BinaryReader   reader   =   new   BinaryReader(fs);
                    byte[]   by   =   new   byte[info.Length];