不使用 toString() JavaScript 方法构建十进制到十六进制转换器

我想从头开始构建一个十进制到十六进制的转换器,这很困难。我编写了一些代码,可以为我提供正确的数字,但我正在努力尝试将这些数字转换为字母(A=10,B=11...)。


我想要的是在我的result数组中将这些数字 (10, 11, 12, 13, 14, 15) 替换为其等效的 (A, B, C, D, E, F)返回内部给出的每个结果的列表我的while循环。


我尝试使用replace()使用此对象的方法, var hexa = {'A':10, 'B':11, 'C':12, 'D':13, 'E':14, 'F':15};但看起来我无法将此方法与列表一起使用。


var valor = 127;  // THIS IS THE DECIMAL NUMBER TO BE CONVERTED TO HEXADECIMAL

var result = [];


while (valor > 0) {

  result.push(valor%16);

  valor = Math.floor(valor/16);

}


result = result.reverse();


console.log(result);  // OUTPUTS [7,15]


叮当猫咪
浏览 214回答 3
3回答

qq_笑_17

我可能会做这样的事情:const digits = "0123456789abcdef";const hex = val => {  let result = "";  while (val > 0) {    result = digits[val % 16] + result;    val = val >> 4;  }  return result;}console.log(hex(1234)); // 4d2

蝴蝶不菲

您的hexa对象键和值应该颠倒,因为您正在寻找数字以映射到一个字符。var hexa = { 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F' };然后您可以使用Map()进行转换。result = result.map(value => value >= 10 ? hexa[value] : value);要将此结果转换为十六进制数,您可以使用Array.join()以空字符作为分隔符。var hex = result.join('');现场示例:var hexa = { 10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F' };var valor = 127;var result = [];while (valor > 0) {  result.push(valor % 16);  valor = Math.floor(valor / 16);}result = result.reverse();result = result.map(value => value >= 10 ? hexa[value] : value);console.log(result);var hex = result.join('');console.log("Hexadecimal number: " + hex);

红糖糍粑

您可能知道需要将 的每个元素转换result为十六进制数字,然后将它们全部连接在一起形成一个字符串。对数组的每个元素进行转换的函数是map:result = result.map(x => transforms[x]);其中transformDict是一个包含所有转换的数组:var transforms = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];现在result将是['7', 'F'],我们只需要join他们!console.log(result.join(''));var valor = 127;  // THIS IS THE DECIMAL NUMBER TO BE CONVERTED TO HEXADECIMALvar reverseHexDigits = [];while (valor > 0) {  reverseHexDigits.push(valor%16);  valor = Math.floor(valor/16);}var hexDigits = reverseHexDigits.reverse();var transforms = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'];var result = hexDigits.map(x => transforms[x]).join('');console.log(result);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript