使用自定义映射 JavaScript 将整数从十进制映射到十六进制
javascriptweb developmentobject oriented programming更新于 2025/9/30 4:28:17
通常,当我们将十进制转换为十六进制(基数为 16)时,我们使用集合 0123456789ABCDEF 来映射数字。
我们需要编写一个函数,该函数的功能完全相同,但为用户提供使用任何比例的自由,而不是上面提到的比例。
例如 −
十进制 363 的十六进制表示法为 16B 但是,如果用户决定使用比例尺"qwertyuiopasdfgh"而不是"0123456789ABCDEF",那么数字 363 将由 wus 表示
这就是我们需要做的。
因此,让我们通过创建函数 toHex() 来实现这一点,该函数利用递归从整数构建十六进制。准确地说,它将接受四个参数,但在这四个参数中,只有前两个参数对最终用户有用。
第一个参数是要转换为十六进制的数字,第二个参数是自定义比例,它是可选的,如果提供,它应该是恰好 16 个字符的字符串,否则函数返回 false。另外两个参数是 hexString 和 isNegative,默认情况下分别设置为空字符串和布尔值。
示例
const num = 363;
const toHex = (
num,
hexString = '0123456789ABCDEF',
hex = '',
isNegative = num < 0
) => {
if(hexString.length !== 16){
return false;
}
num = Math.abs(num);
if(num && typeof num === 'number'){
//递归地将余数附加到十六进制并将 num 除以 16
return toHex(Math.floor(num / 16), hexString,
`${hexString[num%16]}${hex}`, isNegative);
};
return isNegative ? `-${hex}` : hex;
};
console.log(toHex(num, 'QWERTYUIOPASDFGH'));
console.log(toHex(num));
console.log(toHex(num, 'QAZWSX0123456789'))
输出
控制台中的输出将是 −
WUS 16B A05
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

