iota-ternary
Version:
Fast utility functions for conversion between trytes, trits and bytes
38 lines (37 loc) • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const BYTES_TO_TRITS = new Array(243 * 5);
bytesToTritsLoop: for (let i = 0, trits = [0, 0, 0, 0, 0]; i < 243; ++i) {
for (let j = 0; j < 5; ++j) {
BYTES_TO_TRITS[i * 5 + j] = trits[j];
}
for (let j = 0; j < 5; ++j) {
if (++trits[j] > 1) {
trits[j] = -1;
}
else {
continue bytesToTritsLoop;
}
}
}
function bytesToTrits(bytes) {
var i, j, v, t;
const size = bytes.byteLength;
const trits = new Array(size * 5);
for (i = 0; i < size; ++i) {
v = bytes.readInt8(i);
if (v < 0) {
v += 243;
}
if (v > 243 || v < 0) {
throw new Error(`Incorrect byte ${bytes.readInt8(i)}!`);
}
trits[i * 5 + 0] = BYTES_TO_TRITS[v * 5 + 0];
trits[i * 5 + 1] = BYTES_TO_TRITS[v * 5 + 1];
trits[i * 5 + 2] = BYTES_TO_TRITS[v * 5 + 2];
trits[i * 5 + 3] = BYTES_TO_TRITS[v * 5 + 3];
trits[i * 5 + 4] = BYTES_TO_TRITS[v * 5 + 4];
}
return trits;
}
exports.bytesToTrits = bytesToTrits;