Re: [问题] 一长串资料解析

楼主: pttworld (批踢踢世界)   2015-05-12 12:32:37
※ 引述《JGC18 (JGC)》之铭言:
: 各位先进好:
: 小弟今天有一台设备,假设回应资料的长度会有,250bytes, 120bytes, 60bytes
: 这250bytes,假设依照规格总共可以解析出10个字段(字段编号为A,B,C,D,E,F,G,H,I,J)
: 120bytes,可以解析出6个字段(字段编号为 A,D,E,F,I,J)
: 60bytes,可以解析出3个字段 (字段编号为 B,C,D)
: 250个bytes等于是完整的所有资料回复
: 如果有错误,就是回应120bytes跟60bytes
: 我目前想到的方法是用一个class类似这样
: Public Class DataParser{
: private byte[] a= new byte[10];
: private byte[] b= new byte[5];
: private byte[] c= new byte[3];
: ....//以此类推新增到 j
: private byte[] j= new byte[5];
: public void parse(byte[] data){
: if(长度为250){
: //解析到10个字段中, a,b,c,d,e,f,g,h,i,j
: } else if(长度为120) {
: //解析到6个字段中
: } else if (长度为60) {
: //解析到3个字段中
: } else {//error, 未知长度}
: }
: public byte[] getA(){ return a;}
: public byte[] getB(){ return b;}
: ....
: public byte[] getJ(){ return j;}
: }
: 这是我目前想到最直觉得方法
: 但是实际上可能我的字段不止10个
: 可能会达到50个以上,接收要解析的资料长度,最大不会超过300bytes
: 但这样的方式是否会有太多byte array的变量,使用太多内存呢
: 不知道是不是有其它思考的方向可以提供给我做参考
: 感谢
如果你拿得到format,直接开一长串阵列,
再根据需要宣告和定义成员变量和区域变量,
关键是区域变量的使用和随时可以根据format再次取值,
总不可能整个array的数值同时在一个叙述中出现吧,
希望你能懂我讲的。

Links booklink

Contact Us: admin [ a t ] ucptt.com