java解析c语言的结构体有好多种方案,经过对比之后还是选择了Javolution,主要是它的用法和平常c结构体的用法看起来差不多,而且一开始测试用的时候效果还可以,但是后来随着使用越多,那些坑就慢慢暴露出来了。
坑一:
对齐方式会变。
public static class UserInfo_t extends Struct {
public final Unsigned32 id = new Unsigned32();
public final Unsigned32 age = new Unsigned32();
public final Unsigned32 weight = new Unsigned32();
public final Signed64 coin = new Signed64();
public final Unsigned32 reserve = new Unsigned32();
}
就这样乍一看它的size应该是4+4+4+8+4=24,但是实际运行的结果却是28,无缘无故多了4个字节,一旦把数据填充到这结构体里面,coin字段开始后面的