xiemeilin126 发表于 2009-6-19 15:42:11

怎样分离二进制数据

我把数据读出来了,却不知如何分离成对应的项
struct datarec /* 长度=100 byte */    项序
   { unsigned   char baoformat;          1
       unsigned   char station;            2
       unsigned   char stationname;   3
       unsigned   intrec_time;         4
       unsigned   long rec_date;         5   
unsigned   intwd2dd;            6         unsigned   intwd2df;            7
       unsigned   intwd10dd;             8
       unsigned   intwd10df;             9   
       unsigned   intwd10maxdd;         10
       unsigned   intwd10maxdf;         11
       unsigned   intwd3smaxdd;         12
       unsigned   intwd3smaxdf;         13
       unsigned   char wd10maxtime;       14
       unsigned   char wd3smaxtime;       15
                       inttemp;            16
                       intmaxtemp;         17
                   intmintemp;         18
       unsigned   char maxtemptime;       19
       unsigned   char mintemptime;       20
       unsigned   inthourrf;            21
       unsigned   intdayrf;             22
                  char rh;                23
                          char maxrh;             24
       unsigned   char maxrhtime;         25
                  char minrh;             26
       unsigned   char minrhtime;         27
       unsigned   char rfmark1;         28
                  intdp;                29
                   intps;                30
                  intmaxps;             31
                   intminps;             32
       unsigned   char maxpstime;         33
       unsigned   char minpstime;         34
       unsigned   char minrf;         35
                   intBps;               36
                        -1-
       unsigned   char Ys;                37
       unsigned   char w3a;               38
       unsigned   intwd3daymax;         39
       unsigned   intwf3daymax;         40
       unsigned   intwd3daymaxtime;   41
       unsigned   intwd10daymax;      42
       unsigned   intwf10daymax;      43
       unsigned   intwd10daymaxtime;    44
                  intdaymaxtemp;      45
       unsigned   intdaymaxtemptime;    46
                  intdaymintemp;      47
       unsigned   intdaymintemptime;    48
       unsigned   intWpV;               49
       unsigned   char Temp;         50
      } Recv_Data;

   二. 自动站资料格式中各项说明
    第 1项 资料类型(baoformat) 长=1 byte; 其中: “0”或0为正点报告 ,1为瞬时报告;其中瞬时报告只有正点观测数据;
    第 2项 自动站编号(station);长=1 byte;数值为: 0-99等;
    第 3项 自动站站号(stationname);长=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倍,156=15.6m/s;
    第 8项 十分钟风向(wd10dd);数值说明同第 6项;
    第 9项 十分钟风速(wd10df);数值说明同第 7项;
    第10项 时十分钟最大风速时的风向(wd10maxdd);数值说明同第 6项;
    第11项 时十分钟最大风速(wd10maxdf);数值说明同第7项;
    第12项 时瞬时极大风速时的风向(wd3smaxdd);数值说明同第 6项;
第13项 时瞬时极大风速(wd3smaxdf);数值说明同第 7项;
    第14项 时十分钟最风速出现时间(wd10maxtime);长=1 byte,
用分钟表示;
                        -2-
    第15项 时瞬时极风速出现时间(wd3smaxtime);数值说明同第14项;
    第16项 正点温度(temp);长=2 byte, 数值-500至500有效,扩大10倍, 如:-123=-12.3℃;
    第17项 时最高温度(maxtemp);数值说明同第16项;
    第18项 时最低温度(mintemp);数值说明同第16项;
    第19项 时最高温度出现时间(maxtemptime),数值说明同第14项;
    第20项 时最低温度出现时间(mintemptime),数值说明同第14项;
    第21项 时雨量累计(hourrf);从每小时的59分59秒后清零并开始重新计数;长=2 byte,数值0至9999;以0.1mm为单位,例:1001=100.1mm;
    第22项 日雨量累计(dayrf);数值说明同第21项;
    第23项 正点湿度(rh);长=1 byte; 0至100表示 0%至100%;
    第24项 时最高湿度(maxrh);数值说明同第23项;
    第25项 时最高湿度出现时间(maxrhtime);数值说明同第14项;
    第26项 时最低湿度(minrh);数值说明同第23项;
    第27项 时最低湿度出现时间(minrhtime);数值说明同第14项;
    第28项 当前一分钟雨量指示(rfmark1);
第29项 露点温度(dp);数值说明同第16项;
    第30项:正点气压(ps);长=2 byte,数值在8000至11000有效,表示800.0hpa-1100.0hpa;
    第31项:时最高气压(maxps);数值说明同第30项;
    第32项:时最低气压(minps);数值说明同第30项;
    第33项:时最高气压出现时间((maxpstime);数值说明同第14项;
    第34项:时最低气压出现时间((minpstime);数值说明同第14项;
    第35项:一小时中每五分钟的雨量分布(minrf);若报告时间为00分的正点报,第一个数为0-5分钟的雨量累计,第12个数为56-60分钟的雨量累计;其它时间的报告时,第12个数为报告时间前五分钟的雨量累计,其余的向前推五分钟;
    第36项:测站高度(Bps);用于计算海平面气压;单为0.1米;例: 189=18.9米;
    第37项:自动站探测项目(Ys);用位权方式定义:一个字节有八位,最低位为0位,最高位为第7位;第0位定义降雨,第1位定义风,第2位定义温度,第3位定义湿度,第4位定义气压;当位权定义为0,表示无该项探测项目,定义为1,表示有该项探测项目;如:雨、风、
                           -3-
温项目,Ys=7;(0位=1,权值为1;1位=1,权值为2;2位=1,权值为4);
    第38项:自动站型号(w3a);
    第39项:日瞬时极大风速时的风向(wd3daymax);数值说明同第6项;
第40项:日瞬时极大风速(wf3daymax);数值说明同第 7项;
   第41项 日瞬时极大风速出现时间(wd3daymaxtime);数值说明同第4项;
   第42项 日十分钟最大风速时的风向(wd10daymax);数值说明同第 6项;
   第43项 日十分钟最大风速时(wf10daymax);数值说明同第 7项;
   第44项 日十分钟最大风速出现时间(wd10daymaxtime;);数值说明同第4项;
   第45项 日最高温度(daymaxtemp);数值说明同第16项;
   第46项 日最高温度出现时间(daymaxtemptime);数值说明同第4项;
   第47项 日最低温度(daymintemp);数值说明同第16项;
   第48项 日最低温度出现时间(daymintemptime);数值说明同第4项;
    第49项 自动站电池电压(WpV),长=2 byte,扩大100倍 ,1231=12.31伏;正常值为11.50-13.5伏,当此电压小与11.50伏时,可能交流断电;应检查自动站端的供电或交流保险;
第50项 没使用;

三岁就很帅 发表于 2009-6-20 14:54:05

string subset可以不

三岁就很帅 发表于 2009-6-20 14:54:16

看你读出来是数组还是字符串
页: [1]
查看完整版本: 怎样分离二进制数据