bug fix:任意进制转换, 数字过大时, 导致部分输出数据错误
This commit is contained in:
parent
0d231aa9ed
commit
039c07ff1c
18
dist/utils/number.util.cjs
vendored
18
dist/utils/number.util.cjs
vendored
@ -184,22 +184,22 @@ function convert({
|
|||||||
if (base === to || !checkRadixLegal(base) || !checkRadixLegal(to)) {
|
if (base === to || !checkRadixLegal(base) || !checkRadixLegal(to)) {
|
||||||
return numStr;
|
return numStr;
|
||||||
}
|
}
|
||||||
let p = 0;
|
let p = new import_ethereumjs_util.BN(0);
|
||||||
let number10 = 0;
|
let number10 = new import_ethereumjs_util.BN(0);
|
||||||
while (p < numStr.length) {
|
while (p.ltn(numStr.length)) {
|
||||||
number10 *= base;
|
number10 = number10.muln(base);
|
||||||
number10 += transformCharToNum(numStr.charAt(p), base);
|
number10 = number10.addn(transformCharToNum(numStr.charAt(p.toNumber()), base));
|
||||||
p++;
|
p = p.addn(1);
|
||||||
}
|
}
|
||||||
if (to === 10) {
|
if (to === 10) {
|
||||||
return number10.toString();
|
return number10.toString();
|
||||||
}
|
}
|
||||||
let result = "";
|
let result = "";
|
||||||
let cur;
|
let cur;
|
||||||
while (number10) {
|
while (number10.gtn(0)) {
|
||||||
cur = number10 % to;
|
cur = number10.modrn(to);
|
||||||
result = transformNumToChar(cur, alphabet) + result;
|
result = transformNumToChar(cur, alphabet) + result;
|
||||||
number10 = Math.floor(number10 / to);
|
number10 = number10.divn(to);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
2
dist/utils/number.util.cjs.map
vendored
2
dist/utils/number.util.cjs.map
vendored
File diff suppressed because one or more lines are too long
18
dist/utils/number.util.js
vendored
18
dist/utils/number.util.js
vendored
@ -140,22 +140,22 @@ function convert({
|
|||||||
if (base === to || !checkRadixLegal(base) || !checkRadixLegal(to)) {
|
if (base === to || !checkRadixLegal(base) || !checkRadixLegal(to)) {
|
||||||
return numStr;
|
return numStr;
|
||||||
}
|
}
|
||||||
let p = 0;
|
let p = new BN(0);
|
||||||
let number10 = 0;
|
let number10 = new BN(0);
|
||||||
while (p < numStr.length) {
|
while (p.ltn(numStr.length)) {
|
||||||
number10 *= base;
|
number10 = number10.muln(base);
|
||||||
number10 += transformCharToNum(numStr.charAt(p), base);
|
number10 = number10.addn(transformCharToNum(numStr.charAt(p.toNumber()), base));
|
||||||
p++;
|
p = p.addn(1);
|
||||||
}
|
}
|
||||||
if (to === 10) {
|
if (to === 10) {
|
||||||
return number10.toString();
|
return number10.toString();
|
||||||
}
|
}
|
||||||
let result = "";
|
let result = "";
|
||||||
let cur;
|
let cur;
|
||||||
while (number10) {
|
while (number10.gtn(0)) {
|
||||||
cur = number10 % to;
|
cur = number10.modrn(to);
|
||||||
result = transformNumToChar(cur, alphabet) + result;
|
result = transformNumToChar(cur, alphabet) + result;
|
||||||
number10 = Math.floor(number10 / to);
|
number10 = number10.divn(to);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
2
dist/utils/number.util.js.map
vendored
2
dist/utils/number.util.js.map
vendored
File diff suppressed because one or more lines are too long
2
dist/utils/wallet.util.cjs.map
vendored
2
dist/utils/wallet.util.cjs.map
vendored
File diff suppressed because one or more lines are too long
2
dist/utils/wallet.util.js.map
vendored
2
dist/utils/wallet.util.js.map
vendored
File diff suppressed because one or more lines are too long
@ -256,12 +256,12 @@ export function convert({
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 先转成10进制
|
// 先转成10进制
|
||||||
let p = 0
|
let p = new BN(0)
|
||||||
let number10 = 0
|
let number10 = new BN(0)
|
||||||
while (p < numStr.length) {
|
while (p.ltn(numStr.length)) {
|
||||||
number10 *= base
|
number10 = number10.muln(base)
|
||||||
number10 += transformCharToNum(numStr.charAt(p), base)
|
number10 = number10.addn(transformCharToNum(numStr.charAt(p.toNumber()), base))
|
||||||
p++
|
p = p.addn(1)
|
||||||
}
|
}
|
||||||
// 若要转换的正好是进制,则直接返回
|
// 若要转换的正好是进制,则直接返回
|
||||||
if (to === 10) {
|
if (to === 10) {
|
||||||
@ -269,10 +269,10 @@ export function convert({
|
|||||||
}
|
}
|
||||||
let result = ''
|
let result = ''
|
||||||
let cur
|
let cur
|
||||||
while (number10) {
|
while (number10.gtn(0)) {
|
||||||
cur = number10 % to
|
cur = number10.modrn(to)
|
||||||
result = transformNumToChar(cur, alphabet) + result
|
result = transformNumToChar(cur, alphabet) + result
|
||||||
number10 = Math.floor(number10 / to)
|
number10 = number10.divn(to)
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user