原題網址:https://leetcode.com/problems/convert-a-number-to-hexadecimal/
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.
Note:
- All letters in hexadecimal (
a-f
) must be in lowercase. - The hexadecimal string must not contain extra leading
0
s. If the number is zero, it is represented by a single zero character'0'
; otherwise, the first character in the hexadecimal string will not be the zero character. - The given number is guaranteed to fit within the range of a 32-bit signed integer.
- You must not use any method provided by the library which converts/formats the number to hex directly.
Example 1:
Input: 26 Output: "1a"
Example 2:
Input: -1 Output: "ffffffff"
方法:通過二進制轉換。
public class Solution {
private char[] hex(int num) {
char[] hex = new char[8];
for(int i = 7; i >= 0; i--) {
hex[i] = (num & 0b1111) < 10 ? (char)('0' + (num & 0b1111)) : (char)('a' + (num & 0b1111) - 10);
num >>>= 4;
}
return hex;
}
public String toHex(int num) {
char[] hex = hex(num);
StringBuilder sb = new StringBuilder();
boolean nonzero = false;
for(int i = 0; i < hex.length; i++) {
if (hex[i] != '0') {
nonzero = true;
}
if (nonzero) {
sb.append(hex[i]);
}
}
if (sb.length() == 0) {
sb.append('0');
}
return sb.toString();
}
}