varIntWriter function

Uint8List varIntWriter(
  1. int? length
)

Implementation

Uint8List varIntWriter(int? length) {
  ByteDataWriter writer = ByteDataWriter();

  if (length == null) {
    return writer.toBytes();
  }

  if (length < 0xFD) {
    writer.writeUint8(length);
    return writer.toBytes();
  }

  if (length < 0xFFFF) {
//            return HEX.decode("FD" + length.toRadixString(16));
    writer.writeUint8(253);
    writer.writeUint16(length, Endian.little);
    return writer.toBytes();
  }

  if (length < 0xFFFFFFFF) {
//            return HEX.decode("FE" + length.toRadixString(16));

    writer.writeUint8(254);
    writer.writeUint32(length, Endian.little);
    return writer.toBytes();
  }

  if (BigInt.parse("0xFFFFFFFFFFFFFFFF").compareTo(BigInt.from(length)) == -1) {
//            return HEX.decode("FF" + length.toRadixString(16));

    writer.writeUint8(255);
    writer.writeInt32(length & -1, Endian.little);
    writer.writeUint32((length / 0x100000000).floor(), Endian.little);
    return writer.toBytes();
  }

  return writer.toBytes();
}