我需要从Modbus寄存器读取Long(交换)值。
从上图中我想读取值为78146789的寄存器42002.这是Long(Swapped)格式。它看起来像十进制格式:
我正在使用Java short数组来读取它。我正确得到了1192,27877。现在我需要将这些值转换为适当的值,在这种情况下为78146789。这该怎么做?如何在这里代表Long(Swapped)?
答案 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());
}