给定一个整数,写一个函数将其转换为16进制。对于负整数,需要使用二进制补码。
样例
样例1
输入:26
输出:"1a"
样例2
输入:-1
输出:"ffffffff"
注意事项
- 16进制的所有字母
(a-f)
必须为小写。 - 16进制字符串不能包含额外的前导
0
。如果数字为零,将它表示为单个字符'0'
;否则,16进制数的第一个字符不能为'0'
。 - 给定数字保证在32位有符号整数的范围内。
- 你不能使用任何库中的函数,从而直接将给定数字转换为16进制。
class Solution {
public:
/**
* @param num: an integer
* @return: convert the integer to hexadecimal
*/
string toHex(int num) {
// Write your code here
string ret;
if(num == 0)
{
return string("0");
}
char array[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
int i = 0;
for(i = 0; i < 8; i++)
{
int tmp = num & 0xF;
ret = array[tmp] + ret;
num >>= 4;
}
int j;
for(j = 0; j < ret.size(); j++)
{
if(ret[j] != '0')
break;
}
if( j < ret.size())
ret.erase(0,j);
return ret;
}
};