bug fix:任意进制转换, 数字过大时, 导致部分输出数据错误

This commit is contained in:
CounterFire2023 2024-04-14 09:57:48 +08:00
parent 0d231aa9ed
commit 039c07ff1c
7 changed files with 31 additions and 31 deletions

View File

@ -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;
}

File diff suppressed because one or more lines are too long

View File

@ -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;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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
}