[問題] 一長串資料解析

作者: JGC18 (JGC)   2015-05-12 11:43:29
各位先進好:
小弟今天有一台設備,假設回應資料的長度會有,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的變數,使用太多記憶體呢
不知道是不是有其它思考的方向可以提供給我做參考
感謝
作者: LaPass (LaPass)   2015-05-12 20:45:00
看不太懂問題,請問是指資料長度不固定嗎?還是說格式不清不楚導致這種問題?
作者: realmeat (真肉)   2015-05-13 12:12:00
看不懂你的需求 +1

Links booklink

Contact Us: admin [ a t ] ucptt.com