gpt4 book ai didi

javascript - 如何在不使用 toString 的情况下使用 JavaScript 中的自定义 n 长度字符集打印 n 位数字

转载 作者:行者123 更新时间:2023-11-29 17:38:37 24 4
gpt4 key购买 nike

以同样的方式,我们使用字符 123456789abcdef 得到十六进制“数字”,您可以简单地执行 integer.toString(16) 将整数转换为十六进制:

> (16).toString(16)
'10'

...我想改为使用自定义字符集和自定义基础。所以对于十六进制来说,我想使用字符 13579acegikmoqsu,那么它将是这样的:

> (16).toString(16, '13579acegikmoqsu')
'ik'

我实际上并不知道在这种情况下输出值是多少,只是编造的。但我正在寻找如何在 JavaScript 中执行此操作。

十六进制之外的另一个示例是,例如,使用字符集 and123 将 6 进制数字转换为字符串,因此它将是这样的:

> (16).toString(6, 'and123')
'a3d'

我也不知道这种情况下的值是多少,我不知道如何计算它。基本上想知道如何在 JavaScript 中执行此操作,不一定要使用此 toString api,最好它会更底层一些,这样我也可以理解其背后的逻辑。

同样,了解如何反转它会很有帮助,因此从 a3d => 16 开始,就像在这个伪示例中一样。

最佳答案

您可以将整数值的字符值映射为索引

function toString(n, characters) {
var radix = characters.length;
return Array
.from(n.toString(radix), v => characters[parseInt(v, radix)])
.join('');
}

console.log(toString(16, '13579acegikmoqsu')); // 31

没有 toStringparseInt 的版本。

function toString(n, characters) {
var radix = characters.length,
temp = [];

do {
temp.unshift(n % radix);
n = Math.floor(n / radix);
} while (n)

return temp
.map(i => characters[i])
.join('');
}

console.log(toString(16, '13579acegikmoqsu')); // 31

关于javascript - 如何在不使用 toString 的情况下使用 JavaScript 中的自定义 n 长度字符集打印 n 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54556553/

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