描述:訊息的格式如下:
1、一條訊息由乙個或多個基本資訊單元(information element)ie組成。
2、每個ie採用tlv編碼。tlv是tag length value的縮寫,它是一種變長資料的編譯碼, 由tag,length(value的長度)及value三個域組成。
3、tag固定佔4個位元組,length固定佔2個位元組。
4、位元組序按照大端序處理。
根據ie的tag值大小對訊息中所有的ie由小到大排序,並輸出。
例如訊息:0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x66
前面4個位元組是tag:0x00, 0x00, 0x00, 0x00
後面2個位元組是長度:0x00, 0x02,
後面的2個位元組0x00, 0x66是value 該訊息只有乙個ie。
執行時間限制: 無限制
記憶體限制: 無限制
輸入:
位元組流,位元組之間用「,」隔開,
如 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x02, 0x01, 0x02
輸出:
根據ie的tag值的大小對訊息中所有的ie排序,並輸出。
位元組序按照大端序處理。 位元組流,位元組之間用「,」隔開,
如: 0x00, 0x00, 0x00, 0x66, 0x00, 0x02, 0x01,0x02, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00。
如果訊息解碼失敗,請輸出false。
樣例輸入: 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00,0x00, 0x66, 0x00, 0x02, 0x01, 0x02
樣例輸出: 0x00, 0x00, 0x00, 0x66, 0x00, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00
思路:
略過前面的位,直接去計算第22,23,27,28位的值,就知道有n個value,然後讀取後續n個就行了,具體思路已經注釋。
#include#include#include#define maxbuf 65535
char buf[maxbuf];
char ies[100][maxbuf];
char temp[maxbuf];
int main()
}printf("%s",ies[0]);
for(j=1;j
TLV 格式及編譯碼示例
tlv是一種可變格式,意思就是 type型別,lenght長度,value值 type和length的長度固定,一般那是2 4個位元組 這裡統一採用4個位元組 value的長度有length指定 編碼方法 1.將型別type用htonl轉換為網路位元組順序,指標偏移 4 2.將長度length用ht...
華為程式設計大賽
本試題採用自動測試用例進行評分,測試用例不對考生公開,凡不滿足提交要求導致不能執行或用例不通過,不予評分 1 排序演算法 20分 l 問題描述 將給定的無序整數陣列降序排列後輸出,輸入的無序陣列長度為n,型別為unsigned int l 要求實現函式 void dscsort const int ...
華為程式設計大賽決賽題
題目 俄羅斯方塊覆蓋。給定 乙個21 21的格仔矩陣,從1到441編號。輸入是乙個檔案testin.txt,裡面有4個數字,每乙個數字代表陣列下標,陣列元素值為1,表示障礙。空著的格仔用0表示。這四個數字代表的圖形只能是這個中的一種!也就是說。矩陣中4個1勾勒出個圖形只能是這兩種樣子。要求是用俄羅斯...