decodeLength static method

BigInt decodeLength(
  1. MutableIterable input
)

Implementation

static BigInt decodeLength(final MutableIterable input) {
  if (input.isEmpty) {
    throw Exception('Invalid data');
  }

  if ((input.first & 0x80) == 0) {
    final ret = BigInt.from(input.first);
    input.mutate = input.skip(1);
    return ret;
  }

  int numBytes = input.first & 0x7F;
  input.mutate = input.skip(1);
  if (input.length < numBytes) {
    throw Exception('Invalid data');
  }
  final ret = bytesToBigInt(input.take(numBytes));

  input.mutate = input.skip(numBytes);
  return ret;
}