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

java - 如何从Modbus读取长(交换)值?-LMLPHP

从上面的图片中,我想读取寄存器42002,其值为78146789。这是Long(交换)格式。看起来像十进制格式:

java - 如何从Modbus读取长(交换)值?-LMLPHP

我正在使用Java shorts数组读取此内容。我正确得到1192,27877。现在,我需要将这些值转换为适当的值,在这种情况下为78146789。这个怎么做? Long(交换)在这里如何表示?

最佳答案

您可以使用ByteBuffer将短裤转换为多头。但是您必须添加前导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());
}

07-24 15:39