UNPKG

neo-convertor

Version:

A tool to convert neo smart contract data to human-readable one

42 lines (41 loc) 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const bigInteger_1 = require("../bigInteger"); class Base58 { } Base58.Alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; Base58.decode = (input) => { let bi = bigInteger_1.BigInteger.Zero; for (let i = input.length - 1; i >= 0; i--) { let index = Base58.Alphabet.indexOf(input[i]); if (index == -1) throw new RangeError(); bi = bigInteger_1.BigInteger.add(bi, bigInteger_1.BigInteger.multiply(bigInteger_1.BigInteger.pow(Base58.Alphabet.length, input.length - 1 - i), index)); } let bytes = bi.toUint8Array(); let leadingZeros = 0; for (let i = 0; i < input.length && input[i] == Base58.Alphabet[0]; i++) { leadingZeros++; } let tmp = new Uint8Array(bytes.length + leadingZeros); for (let i = 0; i < bytes.length; i++) tmp[i + leadingZeros] = bytes[bytes.length - 1 - i]; return tmp; }; Base58.encode = (input) => { var value = bigInteger_1.BigInteger.fromUint8Array(input, 1, false); var s = ""; while (!value.isZero()) { var r = bigInteger_1.BigInteger.divRem(value, Base58.Alphabet.length); s = Base58.Alphabet[r.remainder.toInt32()] + s; value = r.result; } for (var i = 0; i < input.length; i++) { if (input[i] == 0) s = Base58.Alphabet[0] + s; else break; } return s; }; exports.Base58 = Base58;