0

大家好:)我目前正在使用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 似乎不支持“%”运算符。有没有解决的办法?

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

4

1 回答 1

0

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

最新版本的 Preon 在 Codehaus:

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

您可以检查头部,但还有一个名为 PREON-35 的单独分支,其中包含用于执行此处讨论的操作的位。

于 2011-02-05T21:43:39.963 回答