Convert a Number to Hexadecimal

easy math bit manipulation

Problem

Given a signed 32-bit integer num, return its lowercase hexadecimal representation. Negative numbers use two's complement; do not use any library conversion.

Inputnum = 26
Output"1a"
26 = 0001·1010 in binary = 1·16 + 10 → "1a".

def to_hex(num):
    if num == 0: return "0"
    if num < 0: num += 1 << 32
    digits = "0123456789abcdef"
    out = ""
    while num > 0:
        out = digits[num & 0xf] + out
        num >>= 4
    return out
function toHex(num) {
  if (num === 0) return "0";
  if (num < 0) num = num >>> 0;
  const digits = "0123456789abcdef";
  let out = "";
  while (num > 0) {
    out = digits[num & 0xf] + out;
    num = num >>> 4;
  }
  return out;
}
class Solution {
    public String toHex(int num) {
        if (num == 0) return "0";
        char[] digits = "0123456789abcdef".toCharArray();
        StringBuilder sb = new StringBuilder();
        while (num != 0) {
            sb.append(digits[num & 0xf]);
            num >>>= 4;
        }
        return sb.reverse().toString();
    }
}
string toHex(int num) {
    if (num == 0) return "0";
    string digits = "0123456789abcdef", out;
    unsigned int n = (unsigned int) num;
    while (n > 0) {
        out = digits[n & 0xf] + out;
        n >>= 4;
    }
    return out;
}
Time: O(1) (at most 8 nibbles) Space: O(1)