encodeShareCode function
Encodes a payload as XXXXX-XXXXX. familyId 0–31, engineVersion
0–63; seed is taken modulo 2^32.
Implementation
String encodeShareCode(int familyId, int engineVersion, int seed) {
if (familyId < 0 || familyId > 31) {
throw RangeError.range(familyId, 0, 31, 'familyId');
}
if (engineVersion < 0 || engineVersion > 63) {
throw RangeError.range(engineVersion, 0, 63, 'engineVersion');
}
final bits = <int>[];
_pushBits(bits, familyId, 5);
_pushBits(bits, engineVersion, 6);
_pushBits(bits, seed & 0xFFFFFFFF, 32);
_pushBits(bits, crc7(bits), 7);
final sb = StringBuffer();
for (var i = 0; i < 50; i += 5) {
if (i == 25) sb.write('-');
sb.write(crockfordAlphabet[_readBits(bits, i, 5)]);
}
return sb.toString();
}