base58: optimize.

This commit is contained in:
Christopher Jeffrey 2016-11-11 20:32:41 -08:00
parent 1649b38504
commit 215a3ad6fc
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -49,6 +49,7 @@ exports.toBase58 = function toBase58(data) {
for (; i < data.length; i++) { for (; i < data.length; i++) {
carry = data[i]; carry = data[i];
j = 0; j = 0;
for (k = b58.length - 1; k >= 0; k--, j++) { for (k = b58.length - 1; k >= 0; k--, j++) {
if (carry === 0 && j >= length) if (carry === 0 && j >= length)
break; break;
@ -56,6 +57,7 @@ exports.toBase58 = function toBase58(data) {
b58[k] = carry % 58; b58[k] = carry % 58;
carry = carry / 58 | 0; carry = carry / 58 | 0;
} }
assert(carry === 0); assert(carry === 0);
length = j; length = j;
} }
@ -86,8 +88,9 @@ if (native)
exports.fromBase58 = function fromBase58(str) { exports.fromBase58 = function fromBase58(str) {
var zeroes = 0; var zeroes = 0;
var length = 0;
var i = 0; var i = 0;
var b256, ch, carry, j, out; var b256, ch, carry, j, k, out;
for (i = 0; i < str.length; i++) { for (i = 0; i < str.length; i++) {
if (str[i] !== '1') if (str[i] !== '1')
@ -104,13 +107,18 @@ exports.fromBase58 = function fromBase58(str) {
throw new Error('Non-base58 character.'); throw new Error('Non-base58 character.');
carry = ch; carry = ch;
for (j = b256.length - 1; j >= 0; j--) { j = 0;
carry += 58 * b256[j];
b256[j] = carry % 256; for (k = b256.length - 1; k >= 0; k--, j++) {
if (carry === 0 && j >= length)
break;
carry += 58 * b256[k];
b256[k] = carry % 256;
carry = carry / 256 | 0; carry = carry / 256 | 0;
} }
assert(carry === 0); assert(carry === 0);
length = j;
} }
i = 0; i = 0;