3 回答
TA贡献1818条经验 获得超7个赞
我可能会做这样的事情:
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
TA贡献1810条经验 获得超4个赞
您的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);
TA贡献1815条经验 获得超6个赞
您可能知道需要将 的每个元素转换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 HEXADECIMAL
var 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);
添加回答
举报