我正在使用Preon来编码字节数组中的枚举字段。
第一个字节的字段(example-byte:0xf7 = 1111 01 11)设置如下:
@BoundNumber(size="2") //Corresponds to 11
private byte b1_1_notUsed;
@BoundNumber(size="2") //Corresponds to 01
private ParkingBrakeSwitch parkingBrakeSwitch;
@BoundNumber(size="4")
private byte b1_3_notUsed; //Corresponds to 1111
解码工作正常,因此我希望将解码后的对象编码回字节数组将产生与开头相同的字节数组。但情况并非如此。相反,第一个字节中的位编码如下:
0xdf = 11 01 1111
也就是说,段以相反的顺序编码!为什么解码编码不返回相同的字节数组?我需要做什么?是否有某种我缺失的订单注释?
感谢回复,因为Preon文档似乎很少!
答案 0 :(得分:2)
问题解决了。
描述类没有考虑字节顺序。愚蠢的是,我没有认为字节顺序是字节本身位中的一个问题。但事实显然是这样的:
示例字节:0xf7 = 1111 01 11(Big Endian:MSB优先)
@BoundNumber(size="4", byteOrder=ByteOrder.BigEndian) //Corresponds to 1111
private byte b1_3_notUsed;
@BoundNumber(size="2", byteOrder=ByteOrder.BigEndian) //Corresponds to 01
private ParkingBrakeSwitch parkingBrakeSwitch;
@BoundNumber(size="2", byteOrder=ByteOrder.BigEndian) //Corresponds to 11
private byte b1_1_notUsed;
现在编码在重新编码时再次返回0xf7 = 1111 01 11.