splitU256ToU64Parts static method
Implementation
static List<BigInt> splitU256ToU64Parts(BigInt number,
{Endian order = Endian.big}) {
if (number.isNegative || number.bitLength > 256) {
if (number.isNegative) {
throw ArgumentException(
'Invalid unsigned integer.',
details: {'number': number.toString()},
);
}
throw ArgumentException(
'Number is too large for UInt256.',
details: {'number': number.toString()},
);
}
final BigInt hiHi = (number >> 192).toUnsigned(64);
final BigInt hiLo = (number >> 128).toUnsigned(64);
final BigInt loHi = (number >> 64).toUnsigned(64);
final BigInt loLo = number.toUnsigned(64);
// Return order depends on Endian type
if (order == Endian.little) {
// Matches Rust/Substrate `[u64;4]` layout (little-endian)
return [loLo, loHi, hiLo, hiHi];
} else {
// Big-endian (most significant first)
return [hiHi, hiLo, loHi, loLo];
}
}