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.invalidOperationArguments(
      "combineU256FromU64Parts",
      name: "number",
      reason: "Invalid parts length.",
    );
  }

  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;
}