Convert a Number to Hexadecimal LeetCode solution in JavaScript

1
var toHex = function (num) {
2
let hexSymbols = [
3
"0",
4
"1",
5
"2",
6
"3",
7
"4",
8
"5",
9
"6",
10
"7",
11
"8",
12
"9",
13
"a",
14
"b",
15
"c",
16
"d",
17
"e",
18
"f",
19
];
20
if (num >= 0) {
21
let hex = "";
22
do {
23
let reminder = num % 16;
24
num = Math.floor(num / 16);
25
hex = hexSymbols[reminder] + hex;
26
} while (num > 0);
27
return hex;
28
} else {
29
num = -num;
30
let invertedHex = ""; //FFFFFFFF - hex
31
let needToCarry1 = true; //adding + 1 initially and carrying it on if needed
32
while (num > 0) {
33
let reminder = num % 16;
34
let invertedReminder = 15 - reminder; //inverting
35
if (needToCarry1) {
36
//adding 1 for 2's complement
37
invertedReminder += 1;
38
if (invertedReminder === 16) {
39
//overflow, carrying 1 to the left
40
invertedReminder = 0;
41
needToCarry1 = true;
42
} else {
43
needToCarry1 = false;
44
}
45
}
46
num = Math.floor(num / 16);
47
invertedHex = hexSymbols[invertedReminder] + invertedHex;
48
}
49
//formatting as "FFFFFFFF"
50
while (invertedHex.length < 8) {
51
invertedHex = "f" + invertedHex;
52
}
53
return invertedHex;
54
}
55
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0