encodeIdToIndices function
Implementation
List<int> encodeIdToIndices(
BigInt participantId,
int bitCount,
EncodingConfig config,
) {
if (participantId < BigInt.zero ||
participantId >= (BigInt.one << bitCount)) {
throw ArgumentError('ID must fit within $bitCount bits');
}
final numWords = config.wordsNeeded(bitCount);
final mask = (1 << config.bitsPerWord) - 1;
final indices = <int>[];
BigInt remaining = participantId;
for (int i = 0; i < numWords; i++) {
final index = (remaining & BigInt.from(mask)).toInt();
indices.insert(0, index);
remaining = remaining >> config.bitsPerWord;
}
return indices;
}