encodeBigInt static method
Implementation
static Uint8List encodeBigInt(BigInt number) {
var orig = number;
if (number.bitLength == 0) {
if (number == _negOne) {
return _negOneArray;
} else {
return _zeroList;
}
}
// we may need one extra byte for padding
var bytes = (number.bitLength / 8).ceil() + 1;
var result = Uint8List(bytes);
number = number.abs();
for (var i = 0, j = bytes - 1; i < bytes; i++, --j) {
var x = number.remainder(_b256).toInt();
result[j] = x;
number = number >> 8;
}
if (orig.isNegative) {
_twosComplement(result);
if ((result[1] & 0x80) == 0x80) {
// high order bit is a one - we don't need pad
return result.sublist(1);
}
} else {
if ((result[1] & 0x80) != 0x80) {
// hi order bit is a 0, we dont need pad
return result.sublist(1);
}
}
return result;
}