根據數值占用bit數,按順序從輸入位元組流中解析出對應數值,解析順序按輸入陣列astelement索引公升序。
/*
輸入:位元組陣列長度uiiutputlen為2;
位元組陣列ainputbyte[2]為,對應二進位制為「01100010
1000
0000」;
解析數值個數uielementnum為2;
數值[0]的值佔4個bit,即astelement[0].uielementlength = 4;
數值[1]的值佔5個bit,即astelement[1].uielementlength = 5;
輸出:數值[0]的值為6,二進位制為「0110」,即astelement[0].uielementvalue = 6;
數值[1]的值為5,二進位制為「0010
1」,即astelement[1].uielementvalue = 5。
功能: 根據數值占用bit數,按順序從輸入位元組流中解析出對應數值,
解析順序按輸入陣列astelement索引公升序
輸入:unsigned int uiiutputlen:位元組陣列(流)長度
unsigned char ainputbyte:位元組陣列(流)
unsigned int uielementnum:解析數值個數
element_stru astelement:數值的結構陣列指標,含義如下
struct element_stru;
輸出:參見上述element_stru中uielementvalue描述
返回:void
*/
根據數值占用bit數,按順序從輸入位元組流中解析出對應數值,因此第一步將整個資料轉換成位元組流來進行解析(本文處理成int型)。然後再對位元組流進行解析處理。
typedef
struct element_stru;
void decode(unsigned
int uiiutputlen, unsigned
char ainputbyte,
unsigned
int uielementnum, element_stru astelement)
}/*解析數值個數*/
int size = vec.size();
for(i=0;i0;
for(j=0;jif(astelement[i].uielementlength<1 && \
astelement[i].uielementlength>31)
return;
/*解析數值的總長度uielementlength之和
大於vec的總長度,這裡做擷取處理*/
if(k>size)
temp = (temp<<1)+vec[k];
k++;
}if(k>size&&temp!=0) else
if(k>size&&temp==0)
astelement[i].uielementvalue = temp;
}return;
}
位元組流資料解析
各種與硬體底層相關的資料大都是位元組型的傳輸方式,如串列埠,如果協議定的不好,解析寫不好,就會發生丟包。近期在做linux串列埠的資料通訊時,發生了讓人頭疼的丟包,後分析解析 發現一旦資料段中含有幀頭便會解析不到資料,通過一上午的除錯,寫了乙個新的解析。include 幀頭 長度 命令 資料 校驗 ...
javaIO之檔案位元組流
解釋 file類主要就是檔案在磁碟上的儲存,以及在磁碟上的一些操作,如重新命名,刪除等。1.1檔案的建立 1 createnewfile 方法 在指定位置建立乙個空檔案,如果檔案已經存在了,那麼就不會建立了。建立成功返回值為true,建立失敗就返回false。2 mkdir 方法 在指定位置建立乙個...
Java 之 Java 位元組流
乙個流可以理解為乙個資料的序列。輸入流表示從乙個源讀取資料,輸出流表示向乙個目標寫資料。位元組流 參照物為自己的程式 什麼叫輸出?程式 檔案 輸出 什麼叫輸入?檔案 程式 輸入 位元組輸出流 output 寫檔案 outputstream 是抽象類,是所有輸出流的父類 一次寫入乙個位元組,乙個位元組...