这个第三方库用了有好一阵子了,挺好用的。
目前发现的三个小不足:
1、不支持结构体的嵌套;
2、不支持二维数组;
3、封包时的pack()使用大尾和小尾参数都是有效果的。解包时的unpack()使用小尾参数无效,始终是大尾。
作者早就不维护了,真遇到这些问题只能从其他思路找解决办法了。
以下为引用:
Javastruct 是什么
简而言之,Javastruct 是一个第三方库,用于像处理 C 或者 C++ 结构体那样处理 java 对象。也即利用 Javastruct 可以在 java 上实现类似于结构体的功能和操作。
Javastruct 的用途
在 java 或者 Android 应用程序与一些嵌入式设备通讯或者C、C++ 应用程序通讯时,比如网络、无线、蓝牙、串口通讯等场景,由于实际传输时我们希望在通讯时使用自定义的协议格式,这样就必须进行字节流的处理。比如:协议格式为:“包头 + 命令码 + 长度 + 数据 + 校验 + 包尾“ 这种格式,使用 java 默认的方法就需要每条协议设置或解析每个 byte,十分繁琐。这时,会很怀念 C 语言的结构体和指针,这回极大节省我们的代码逻辑和工作量。这就是我要使用并介绍 JavaStruct 的原因了。除此之外,该库还可以用作一个简单但空间利用高效的序列化方法。
JavaStruct 库支持原语、数组、C字符串及嵌套类等。同时支持大端和小端字节序。 Javastruct 也可以使用 ArrayLengthMarker 注释来处理其他域中定义长度的域。 在后面的例程和文档中会逐步涉及到。
关于 JavaStruct 应用的文章系列,可以移步至如下链接:
1. 《Java 结构体之 JavaStruct 使用教程<一> 初识 JavaStruct》