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)) {
|
||||
return numStr;
|
||||
}
|
||||
let p = 0;
|
||||
let number10 = 0;
|
||||
while (p < numStr.length) {
|
||||
number10 *= base;
|
||||
number10 += transformCharToNum(numStr.charAt(p), base);
|
||||
p++;
|
||||
let p = new import_ethereumjs_util.BN(0);
|
||||
let number10 = new import_ethereumjs_util.BN(0);
|
||||
while (p.ltn(numStr.length)) {
|
||||
number10 = number10.muln(base);
|
||||
number10 = number10.addn(transformCharToNum(numStr.charAt(p.toNumber()), base));
|
||||
p = p.addn(1);
|
||||
}
|
||||
if (to === 10) {
|
||||
return number10.toString();
|
||||
}
|
||||
let result = "";
|
||||
let cur;
|
||||
while (number10) {
|
||||
cur = number10 % to;
|
||||
while (number10.gtn(0)) {
|
||||
cur = number10.modrn(to);
|
||||
result = transformNumToChar(cur, alphabet) + result;
|
||||
number10 = Math.floor(number10 / to);
|
||||
number10 = number10.divn(to);
|
||||
}
|
||||
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)) {
|
||||
return numStr;
|
||||
}
|
||||
let p = 0;
|
||||
let number10 = 0;
|
||||
while (p < numStr.length) {
|
||||
number10 *= base;
|
||||
number10 += transformCharToNum(numStr.charAt(p), base);
|
||||
p++;
|
||||
let p = new BN(0);
|
||||
let number10 = new BN(0);
|
||||
while (p.ltn(numStr.length)) {
|
||||
number10 = number10.muln(base);
|
||||
number10 = number10.addn(transformCharToNum(numStr.charAt(p.toNumber()), base));
|
||||
p = p.addn(1);
|
||||
}
|
||||
if (to === 10) {
|
||||
return number10.toString();
|
||||
}
|
||||
let result = "";
|
||||
let cur;
|
||||
while (number10) {
|
||||
cur = number10 % to;
|
||||
while (number10.gtn(0)) {
|
||||
cur = number10.modrn(to);
|
||||
result = transformNumToChar(cur, alphabet) + result;
|
||||
number10 = Math.floor(number10 / to);
|
||||
number10 = number10.divn(to);
|
||||
}
|
||||
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进制
|
||||
let p = 0
|
||||
let number10 = 0
|
||||
while (p < numStr.length) {
|
||||
number10 *= base
|
||||
number10 += transformCharToNum(numStr.charAt(p), base)
|
||||
p++
|
||||
let p = new BN(0)
|
||||
let number10 = new BN(0)
|
||||
while (p.ltn(numStr.length)) {
|
||||
number10 = number10.muln(base)
|
||||
number10 = number10.addn(transformCharToNum(numStr.charAt(p.toNumber()), base))
|
||||
p = p.addn(1)
|
||||
}
|
||||
// 若要转换的正好是进制,则直接返回
|
||||
if (to === 10) {
|
||||
@ -269,10 +269,10 @@ export function convert({
|
||||
}
|
||||
let result = ''
|
||||
let cur
|
||||
while (number10) {
|
||||
cur = number10 % to
|
||||
while (number10.gtn(0)) {
|
||||
cur = number10.modrn(to)
|
||||
result = transformNumToChar(cur, alphabet) + result
|
||||
number10 = Math.floor(number10 / to)
|
||||
number10 = number10.divn(to)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user