Java 使用Preon的字节对齐问题

Java 使用Preon的字节对齐问题,java,preon,Java,Preon,大家好: 我目前正在为一个业余项目使用preon,我遇到了以下问题:我试图用以下代码读取一个固定长度的字符串: @Bound int string_size; @ByteAlign @BoundString(size = "string_size") my_string; 文件规范要求使用变量填充,以便下一个块的偏移量是4的倍数。 例如,如果string_size=5,则将添加3个空字节,依此类推。我最初认为@ByteAlign注释正是这样做的,然而,查看源代码后,我意识到情况并非如此 我试着

大家好: 我目前正在为一个业余项目使用preon,我遇到了以下问题:我试图用以下代码读取一个固定长度的字符串:

@Bound int string_size;
@ByteAlign @BoundString(size = "string_size") my_string;
文件规范要求使用变量填充,以便下一个块的偏移量是4的倍数。 例如,如果string_size=5,则将添加3个空字节,依此类推。我最初认为@ByteAlign注释正是这样做的,然而,查看源代码后,我意识到情况并非如此

我试着做这个快速修复:

@If ("string_size % 4 == 2") @BoundList(size = "2", type = Byte.class) byte[] padding;
遗憾的是,Limbo似乎不支持%操作符。有办法解决这个问题吗

另外,在哪里/如何获得最新版本?
提前感谢。

Preon目前没有内置的解决方案。正如你所说,它的表达式语言没有模运算符,看起来你可以使用模运算符。但是,您可以实现自己的codecodecorator,这可能是您想要做的事情。您可以实现一个codeddecorator,它在解码值后插入一个读取两个extrac字节的编解码器

Preon的最新版本位于Codehaus:

git://git.codehaus.org/preon.git


您可以检查头部,但还有一个单独的分支称为PREON-35,它具有执行所讨论内容的位。

啊,这太糟糕了。到时候我会想办法的。非常感谢您的回答,我希望您在Preon上的伟大工作能够继续下去!