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 0s. 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"
解法一:Language-Java Run Time-7ms
注意:一個數以二進制形式存放在內存中,負數以它的補碼形式存在
public String toHex(int num) {
StringBuffer sb = new StringBuffer();
if(num == 0)
{
sb.append(0);
}else{
while(num != 0){
//取num的後位
int n = num & 0xf;
if(n >= 0xa){
n = n - 10 + 'a';
}else{
n = n + '0';
}
sb.append((char)n);
//無符號右移,忽略符號位,空位都以0補齊
num = num >>> 4;
}
}
return sb.reverse().toString();
}