OJ 系列之位元組流解析

2021-07-09 14:03:30 字數 1543 閱讀 7136

根據數值占用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 是抽象類,是所有輸出流的父類 一次寫入乙個位元組,乙個位元組...