我需要读取一个二进制文件,其中字节数组的大小取决于一个可选值以及一个常数。如何使用 Preon 实现这一目标?
似乎字节数组大小计算不能是有条件的,即。大小="adaptationFieldControl==0b10 || 自适应字段控制==0b11 ? 184-adaptationFieldLength : 184"
使用一种方法(参见下面的示例)计算动态大小会使 Preon 失败,原因是:org.codehaus.preon.el.BindingException:无法为名为 getPayloadLength 的绑定数据创建绑定。
public class packet {
@BoundNumber(size = "2")
byte adaptationFieldControl;
/**
* Returns the size of the payload if present in the packet
* @return size corrected for adaptation fields
*/
public int getPayloadLength() {
if(isAdaptationFieldsPresent()) {
return 188 - (4+adaptationFieldLength);
}
return 188-4;
}
@If("adaptationFieldControl==0b10 || adaptationFieldControl==0b11")
@BoundNumber(size="8")
short adaptationFieldLength;
@If("adaptationFieldControl==0b01 || adaptationFieldControl==0b11")
@BoundList(size="payloadLength")
byte[] payload;
...