combineU256FromU64Parts static method

BigInt combineU256FromU64Parts(
  1. List<BigInt> parts, {
  2. Endian order = Endian.big,
})

Implementation

static BigInt combineU256FromU64Parts(List<BigInt> parts,
    {Endian order = Endian.big}) {
  if (parts.length != 4) {
    throw ArgumentException('Expected exactly 4 parts for UInt256.',
        details: {'parts': parts.toString()});
  }

  BigInt result = BigInt.zero;

  if (order == Endian.little) {
    // Little-endian: [loLo, loHi, hiLo, hiHi]
    result =
        (parts[3] << 192) | (parts[2] << 128) | (parts[1] << 64) | parts[0];
  } else {
    // Big-endian: [hiHi, hiLo, loHi, loLo]
    result =
        (parts[0] << 192) | (parts[1] << 128) | (parts[2] << 64) | parts[3];
  }

  return result;
}