1

我正在使用 Preon 对字节数组中的枚举字段进行编码。

第一个字节的字段(示例字节: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 文档似乎很少!

4

1 回答 1

2

问题已解决。

描述类没有考虑字节顺序。愚蠢的是,我不认为字节顺序是字节本身的位内的问题。但这显然是这样的:

示例字节:0xf7=1111 01 11(大端: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。

于 2014-01-02T08:20:26.200 回答