iota-ternary
Version:
Fast utility functions for conversion between trytes, trits and bytes
54 lines (45 loc) • 831 B
text/typescript
import { trit } from "../types"
const NUMBERS_TO_TRYTES = {
[]: "9",
[]: "A",
[]: "B",
[]: "C",
[]: "D",
[]: "E",
[]: "F",
[]: "G",
[]: "H",
[]: "I",
[]: "J",
[]: "K",
[]: "L",
[]: "M",
[-13]: "N",
[-12]: "O",
[-11]: "P",
[-10]: "Q",
[-9]: "R",
[-8]: "S",
[-7]: "T",
[-6]: "U",
[-5]: "V",
[-4]: "W",
[-3]: "X",
[-2]: "Y",
[-1]: "Z",
}
export function tritsToTrytes(trits: trit[]): string {
var i, j, m, v
const trytesSize = Math.ceil(trits.length / 3)
const tritsSize = trytesSize * 3
const trytesArray = new Array(trytesSize)
for (i = 0, j = 0, v = 0; i < tritsSize; ++i) {
m = i % 3
v += (trits[i] || 0)*(3**m)
if (m === 2) {
trytesArray[j++] = NUMBERS_TO_TRYTES[v]
v = 0
}
}
return trytesArray.join('')
}