base58: optimize.
This commit is contained in:
parent
1649b38504
commit
215a3ad6fc
@ -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;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user