encodeBigInt method Null safety
- BigInt? number
Encode a BigInt into bytes using big-endian encoding. It encodes the integer to a minimal twos-compliment integer as defined by ASN.1 From pointycastle/src/utils
Implementation
static 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) & BigInt.from(0x80)) ==
BigInt.from(0x80)
? 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! & BigInt.from(0xff)).toInt();
number = number >> 8;
}
return result;
}