encode function
Encode varuint
Implementation
_EncodeOutputModel encode(int number, [Uint8List? buffer, int offset = 0]) {
_checkUInt53(number);
int bytes = 0;
buffer ??= Uint8List(encodingLength(number));
ByteData bufferByteData = buffer.buffer.asByteData();
// 8 bit
if (number < 0xfd) {
bufferByteData.setUint8(offset, number);
bytes = 1;
// 16 bit
} else if (number <= 0xffff) {
bufferByteData.setUint8(offset, 0xfd);
bufferByteData.setUint16(offset + 1, number, Endian.little);
bytes = 3;
// 32 bit
} else if (number <= 0xffffffff) {
bufferByteData.setUint8(offset, 0xfe);
bufferByteData.setUint32(offset + 1, number, Endian.little);
bytes = 5;
// 64 bit
} else {
bufferByteData.setUint8(offset, 0xff);
bufferByteData.setUint64(offset + 1, number, Endian.little);
bytes = 9;
}
return _EncodeOutputModel(bytes, buffer);
}