【问题标题】:Preon framework gathering separated bits (nibbles actually)Preon 框架收集分离的位(实际上是半字节)
【发布时间】:2026-01-06 02:55:02
【问题描述】:

我尝试使用 Preon 解码的二进制流的值由 5 个不连续的半字节组成,例如:

十六进制数据: 00A00000F200EE0000

考虑到值必须从非零标记的半字节中提取到 AF2EE 中,使用 Preon 可以吗?如果是这样,您能否提供任何提示?

PS:零只是示例,它们不代表选择要提取哪些半字节的标准,因为它们是需要的固定位置半字节。

也许@wilfred-spinger 可以提供帮助?

【问题讨论】:

    标签: java frameworks byte nibble preon


    【解决方案1】:

    如果半字节是固定位置,那么是的,这是可能的。类字段可能如下所示:

     @BoundList(size = "8")
     private byte[] reserved0;
    
     @BoundList(size = "4")
     private byte[] nibble1; // location of A
    
     @BoundList(size = "20")
     private byte[] reserved1;
    
     @BoundList(size = "4")
     private byte[] nibble2; // location of F
    
     @BoundList(size = "4")
     private byte[] nibble3; // location of 2
    
     // etc
    

    我认为可能有一种方法可以在 Preon 中指定偏移量,这样您就不必为 0 位设置字段,但我想不起来了。

    希望对您有所帮助。

    【讨论】:

    • 理解你的意思,但是 BoundList 而不是简单的 Bound 或者 BoundNumber 有什么用呢?为什么是字节数组而不是单个字节?