gpt4 book ai didi

javascript - 在 JavaScript 中从具有任意基数的整数生成字符串

转载 作者:行者123 更新时间:2023-11-29 11:00:32 25 4
gpt4 key购买 nike

在 JavaScript 中,您可以像这样从数字生成字符串:

(123).toString(36) // => "3f"

如果你尝试做任意基础:

(123).toString(40)

你得到

Uncaught RangeError: toString() radix argument must be between 2 and 36
at Number.toString (<anonymous>)
at <anonymous>:1:7

想知道如何执行此操作以生成给定任意字母表的字符串。假设你有这个字母表:

abcdefghijklmnopqrstuvwxyz0123456789+-

那么它会是这样的:

toString(123, 'abcdefghijklmnopqrstuvwxyz0123456789+-')

它会打印出一些东西(我不知道是什么),例如 3+,从字母表中挑选。

想知道如何在 JavaScript 中执行此操作,不确定“radix”是否与它有关。谢谢。

更新:寻找如何反转它,又名 fromString(string)

最佳答案

当您要求一个任意长度的 parseInt 时,您可以使用给定的字符串并通过将前一个减少值乘以代码长度并加上字符串位置的数值来减少它代码字符。

额外的是提供的 toString 函数。

function parseInt(value, code) {
return [...value].reduce((r, a) => r * code.length + code.indexOf(a), 0);
}

function toString(value, code) {
var digit,
radix= code.length,
result = '';

do {
digit = value % radix;
result = code[digit] + result;
value = Math.floor(value / radix);
} while (value)

return result;
}

console.log(parseInt('dj', 'abcdefghijklmnopqrstuvwxyz0123456789+-'));
console.log(toString(123, 'abcdefghijklmnopqrstuvwxyz0123456789+-'));
console.log(parseInt('a', 'abcdefghijklmnopqrstuvwxyz0123456789+-'));
console.log(toString(0, 'abcdefghijklmnopqrstuvwxyz0123456789+-'));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 在 JavaScript 中从具有任意基数的整数生成字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47895279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com