@akamfoad/qr
Version:
Fully typed QRCode encoding implementation in JavaScript with no dependencies!
42 lines (33 loc) • 717 B
text/typescript
const QRMath = {
glog: function (n: number) {
if (n < 1) {
throw new Error('glog(' + n + ')');
}
return QRMath.LOG_TABLE[n];
},
gexp: function (n: number) {
while (n < 0) {
n += 255;
}
while (n >= 256) {
n -= 255;
}
return QRMath.EXP_TABLE[n];
},
EXP_TABLE: new Array(256),
LOG_TABLE: new Array(256),
};
for (let i = 0; i < 8; i++) {
QRMath.EXP_TABLE[i] = 1 << i;
}
for (let i = 8; i < 256; i++) {
QRMath.EXP_TABLE[i] =
QRMath.EXP_TABLE[i - 4] ^
QRMath.EXP_TABLE[i - 5] ^
QRMath.EXP_TABLE[i - 6] ^
QRMath.EXP_TABLE[i - 8];
}
for (let i = 0; i < 255; i++) {
QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i;
}
export default QRMath;