怎样分离二进制数据
我把数据读出来了,却不知如何分离成对应的项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项 没使用; string subset可以不 看你读出来是数组还是字符串
页:
[1]