number property

  1. @override
int? get number
override

Returns an integer if the operation pushes a number, or null

Implementation

@override
int? get number {

  // Only number if no more than 4 bytes
  if (_data.length > 4) return null;

  if (_data.isEmpty) return 0;

  // Calculate negative numbers as done by Sumcoin
  final isNeg = (_data.last & 0x80) == 0x80;

  // Absolute number with sign bit removed
  final abs = (
    _data[0]
    | (_data.length > 1 ? _data[1] << 8 : 0)
    | (_data.length > 2 ? _data[2] << 16 : 0)
    | (_data.length > 3 ? _data[3] << 24 : 0)
  // Remove sign bit
  ) & 0x7fffffff >> (8*(4-_data.length));

  return isNeg ? -abs : abs;

}