作者JGC18 (JGC)
看板java
标题[问题] 一长串资料解析
时间Tue May 12 11:43:29 2015
各位先进好:
小弟今天有一台设备,假设回应资料的长度会有,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的变数,使用太多记忆体呢
不知道是不是有其它思考的方向可以提供给我做参考
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.81.123.49
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1431402212.A.8A6.html
1F:推 LaPass: 看不太懂问题,请问是指资料长度不固定吗? 05/12 20:45
2F:→ LaPass: 还是说格式不清不楚导致这种问题? 05/12 20:46
3F:→ realmeat: 看不懂你的需求 +1 05/13 12:12