Easy
31379FavoriteShare
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"
C++:
/*
* @Autor: SourDumplings
* @Date: 2019-09-23 08:50:45
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/convert-a-number-to-hexadecimal/
*
* 采用位运算法,16进制相当于每四位作为一个数字
* 将32位数每四位为一组转换为16进制数字即可,与15坐位与再右移4位做8次
*/
class Solution
{
public:
string toHex(int num)
{
if (num == 0)
{
return "0";
}
int hex[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a',
'b', 'c', 'd', 'e', 'f'};
string res(8, '0');
for (int i = 0; i < 8; i++)
{
res[7 - i] = hex[num & 15];
num >>= 4;
}
int j = 0;
while (res[j] == '0')
{
++j;
}
return res.substr(j);
}
};
Java:
/*
* @Autor: SourDumplings
* @Date: 2019-09-23 09:03:33
* @Link: https://github.com/SourDumplings/
* @Email: changzheng300@foxmail.com
* @Description: https://leetcode.com/problems/convert-a-number-to-hexadecimal/
*/
class Solution
{
public String toHex(int num)
{
if (num == 0)
{
return "0";
}
char[] hex =
{ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
char[] res = new char[8];
for (int i = 0; i < 8; i++)
{
res[7 - i] = hex[num & 15];
num >>= 4;
}
int j = 0;
while (res[j] == '0')
{
++j;
}
return String.copyValueOf(res, j, 8 - j);
}
}