neo-convertor
Version:
A tool to convert neo smart contract data to human-readable one
42 lines (41 loc) • 1.53 kB
JavaScript
;
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;