decode static method
Implementation
static Uint8List decode(String input) {
int bn = 8; // bit needed
int bv = 0; // bit value
int maxLen = (input.length * 15 + 7) ~/ 8;
Uint8List out = new Uint8List(maxLen);
int pos = 0;
int cv;
for (int code in input.codeUnits) {
if (code > 0x33FF && code < 0xD7A4) {
if (code > 0xABFF) {
cv = code - 0x57A4;
} else if (code > 0x8925) {
continue; // invalid range
} else if (code > 0x4DFF) {
cv = code - 0x34CA;
} else if (code > 0x4DB5) {
continue; // invalid range
} else if (code > 0x347F) {
cv = code - 0x3480;
} else {
cv = code - 0x3400;
out[pos++] = (bv << bn) | (cv >> (7 - bn));
break; // last 8 bit data received, break
}
out[pos++] = (bv << bn) | (cv >> (15 - bn));
bv = cv;
bn -= 7;
if (bn < 1) {
out[pos++] = bv >> -bn;
bn += 8;
}
}
}
return out.sublist(0, pos);
}