bigIntToBytes method

Uint8List bigIntToBytes ({BigInt v, bool bigEndian: true })

Implementation

static Uint8List bigIntToBytes({BigInt v, bool bigEndian = true}) {
  Buffer buf = Buffer();
  if (v >= BigInt.from(int8Min) && v <= BigInt.from(int8Max)) {
    buf.addInt8(v.toInt());
    return buf.bytes;
  }
  if (v >= BigInt.from(int16Min) && v <= BigInt.from(int16Max)) {
    buf.addInt16(v: v.toInt(), bigEndian: bigEndian);
    return buf.bytes;
  }
  if (v >= BigInt.from(int32Min) && v <= BigInt.from(int32Max)) {
    buf.addInt32(v: v.toInt(), bigEndian: bigEndian);
    return buf.bytes;
  }
  if (v >= BigInt.from(int64Min) && v <= BigInt.from(int64Max)) {
    buf.addInt64(v: v.toInt(), bigEndian: bigEndian);
    return buf.bytes;
  }

  assert(
      v >= BigInt.from(0),
      'BigInt whose size is larger then int64 must be a positive number: ' +
          v.toRadixString(10));

  var bytes = _encodeBigInt(v);
  return bigEndian ? bytes : Uint16List.fromList(bytes.reversed.toList());
}