以同样的方式,我们使用字符得到十六进制“数字”123456789abcdef
,你可以简单地做integer.toString(16)
从整数到十六进制:
> (16).toString(16)
'10'
...我想改用自定义字符集和自定义基础。所以对于十六进制来说我想使用这些字符13579acegikmoqsu
,那么就会是这样的:
> (16).toString(16, '13579acegikmoqsu')
'ik'
我实际上不知道在这种情况下输出值是多少,只是编造的。但我正在寻找如何在 JavaScript 中做到这一点。
十六进制之外的另一个示例是使用字符集将 6 进制数字转换为字符串and123
,所以它会是这样的:
> (16).toString(6, 'and123')
'a3d'
我也不知道这种情况下的值是多少,我不知道如何计算它。基本上想知道如何在 JavaScript 中做到这一点,不一定使用 thistoString
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
没有的版本toString
and parseInt
.
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)