Skip to content
On this page

405. 数字转换为十六进制数

给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用   补码运算   方法。

注意:
十六进制中所有字母(a-f)都必须是小写。
十六进制字符串中不能包含多余的前导零。如果要转化的数为 0,那么以单个字符'0'来表示;对于其他情况,十六进制字符串中的第一个字符将不会是 0 字符。
给定的数确保在 32 位有符号整数范围内。
不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。

示例 1:
输入:
26
输出:
"1a"

示例 2:
输入:
-1
输出:
"ffffffff"

javascript
/**
 * @param {number} num
 * @return {string}
 */
var toHex = function (num) {
  if (num === 0) return "0"
  if (num < 0) num = 4294967296 + num
  var res = [],
    hex = { 10: "a", 11: "b", 12: "c", 13: "d", 14: "e", 15: "f" },
    HEX = 16

  while (num) {
    var rest = num % HEX
    res.unshift(rest > 9 ? hex[rest] : rest)
    num = (num - rest) / HEX
  }

  return res.join("")
}

console.log(toHex(26))
console.log(toHex(126))
console.log(toHex(-1))