Android使用JavaStruct處理結構體

1.基本使用參考:

https://blog.csdn.net/jazzsoldier/article/details/75669757

2.特殊使用

  • 存在繼承關係時,使用方法:
@StructClass
public class AVServer_Header {

    @StructField(order = 0)
    public short u16Headtag = (short) 0xF0F1;   ///<0xF0F1
    @StructField(order = 1)
    public int u32SrcIP;     ///<源IP地址,小端模式數據
    @StructField(order = 2)
    public short  u16DeviceType; ///<源設備類型
}
@StructClass
public class Local_BrocastSelf extends AVServer_Header{

    @StructField(order = 0)
    AVServer_Header header;
    //public byte[] header = new byte[AVServer_Header.getLength()];


    @StructField(order = 1)
    public byte[] au8DevID = new byte[MainActivity.DP_DEV_ID_LEN];      ///<設備ID
    @StructField(order = 2)
    public  short u8DevType;                        ///<設備類型 @see eDeviceType
    @StructField(order = 3)
  

    public static int getLength(){
        return AVServer_Header.getLength() + 57 + 20;
    }
}

3.混淆

  • 當要做proguard時添加如下代碼避免被處理
-keep @struct.StructClass class * {*;}
-keep,allowobfuscation @interface struct.StructClass
-keepclassmembers class * {
    @struct.StructField *;
}

4.可以大端,小端準確轉換的javaStruct.jar下載,以及demo參考學習,可以下載以下demo:

https://download.csdn.net/download/u012587623/11139284

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章