decode method

  1. @override
(dynamic, int) decode(
  1. Uint8List data,
  2. int offset
)
override

ABI-decode from data at byte offset. Returns (decoded value, bytes consumed from head).

Implementation

@override
(dynamic, int) decode(Uint8List data, int offset) {
  final slice = data.sublist(offset, offset + 32);
  var raw = BigInt.zero;
  for (final b in slice) {
    raw = (raw << 8) | BigInt.from(b);
  }

  final mask = (BigInt.one << bits) - BigInt.one;
  raw = raw & mask;

  // Sign-extend if high bit set.
  if (raw >= (BigInt.one << (bits - 1))) {
    raw = raw - (BigInt.one << bits);
  }
  return (raw, 32);
}