将带dart的16位寄存器转换为float

Convert 16bits register with dart to float

我必须做这个转换:

// 2 Modbus 寄存器浮点数 32

[21946, 17562]需要变成float 32bit -> 1234,6789

// 4个Modbus寄存器加倍

[50437, 12687, 19127, 16531]需要变成双 -> 1234,67890000

有什么帮助吗?

谢谢!

这是一些灵感。 Dart 没有 float 类型,所以 getFloat32 会 return 一个 double.

import 'dart:typed_data';

void main() {
  final float32Data = ByteData(4)
    ..setUint16(0, 17562)
    ..setUint16(2, 21946);
  print(float32Data.getFloat32(0)); // 1234.678955078125

  final doubleData = ByteData(8)
    ..setUint16(0, 16531)
    ..setUint16(2, 19127)
    ..setUint16(4, 12687)
    ..setUint16(6, 50437);
  print(doubleData.getFloat64(0)); // 1234.6789
}