如何从Modbus读取Long(Swapped)值?

时间:2018-02-03 15:48:35

标签: java modbus

我需要从Modbus寄存器读取Long(交换)值。

enter image description here

从上图中我想读取值为78146789的寄存器42002.这是Long(Swapped)格式。它看起来像十进制格式:

enter image description here

我正在使用Java short数组来读取它。我正确得到了1192,27877。现在我需要将这些值转换为适当的值,在这种情况下为78146789。这该怎么做?如何在这里代表Long(Swapped)?

1 个答案:

答案 0 :(得分:1)

您可以使用ByteBuffer将短片转换为long。但你必须添加领先的0

public static void main(String[] args) {
    short x = 1192;
    short y = 27877;
    ByteBuffer bb = ByteBuffer.allocate(8);
    bb.clear();
    bb.putShort((short) 0);
    bb.putShort((short) 0);
    bb.putShort(x);
    bb.putShort(y);
    bb.flip();
    System.out.println("" + bb.getLong());
}