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

    原文作者:浅吟且行的时光
    原文地址: https://www.jianshu.com/p/bac7ba804e9d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞