下列十六進制資料 變長的,該如何決議處理好點:
01 04 00 00 00 00 00 03 00 00 00 00 00 05 02 03 00 00 00 00 00 00 00 00 08 03 02 00 00 08 00 00 00
或者
01 04 00 00 00 00 00 03 00 00 00 00 00 05 03 02 00 00 08 00 00 00
1:紅色部分是 命令 01,02,03
2:綠色部分是 幾個值 04 表示是4個值, 03 表示是3個值, 02 表示是2個值(這里也是變化的)
3:后面每三個算一個值;00 00 00 ,00 00 03,00 00 00,00 00 05
例如 01 04 00 00 00 00 00 03 00 00 00 00 00 05
格式中可能存在這個命令(01,02,03)也可能不存在這個命令(01,02,03)
現在想如何寫一個通用的可以決議拆開這些資料。達到這個目的。
01 00 00 00 , 00 00 03, 00 00 00, 00 00 05
02 00 00 00 00 00 00 00 00 08
03 00 00 08 00 00 00
請高手指點下,謝謝了
uj5u.com熱心網友回復:
如果是確定的長度和確定的位置,可以考慮創建結構體,然后把這些數值(應該是放在一個快取里的吧,并且快取是char or unsigned char)強制轉換成結構體變數,然后根據變化的值來定后面要讀取多少個位元組~uj5u.com熱心網友回復:
現在我的主要疑問是uj5u.com熱心網友回復:
謝謝了,結構體肯定用的01 04 00 00 00 00 00 03 00 00 00 00 00 05 02 03 00 00 00 00 00 00 00 00 08 03 02 00 00 08 00 00 00
01 02 03 可能都存在,也可能存在一個或者2個,這個判斷如何判斷,還有存在的話, 命令后面數值個數也是不固定的,也會變化,這個怎么判斷好。謝謝
uj5u.com熱心網友回復:
還是這個尷尬局面:你要是能把問題描述清楚,那么你自己也就解決了。
既然你描述不清,那別人也不知道問題是什么,更談不到解決。
uj5u.com熱心網友回復:
尾碼大致如此struct s{
ch tag;
int len;
char* data;
}
while(!檔案結尾)
//begin
s s1;
read(s1.tag);
if(tag==1||tag==2||tag==3)
{
read(s1.len);
read(s1.data,s1.len);
}
//end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265688.html
標籤:C語言
上一篇:面試時給做Java的講了陣列與指標的藝術,結果因為緊張還沒講好
下一篇:請問各位大神,clion中debug出現失敗,提示not in executable format.File format not recognized怎么解決
