encodeBigInt function
Encode a BigInt into bytes using big-endian encoding. It encodes the integer to a minimal twos-compliment integer as defined by ASN.1
Implementation
// @internal
Uint8List encodeBigInt(BigInt? number) {
if (number == BigInt.zero) {
return Uint8List.fromList([0]);
}
int needsPaddingByte;
int rawSize;
if (number! > BigInt.zero) {
rawSize = (number.bitLength + 7) >> 3;
needsPaddingByte =
((number >> (rawSize - 1) * 8) & _negativeFlag) == _negativeFlag
? 1
: 0;
} else {
needsPaddingByte = 0;
rawSize = (number.bitLength + 8) >> 3;
}
final size = rawSize + needsPaddingByte;
var result = Uint8List(size);
for (var i = 0; i < rawSize; i++) {
result[size - i - 1] = (number! & _byteMask).toInt();
number = number >> 8;
}
return result;
}