描述
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.
1.All letters in hexadecimal (a-f)
must be in lowercase.
2.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.
3.The given number is guaranteed to fit within the range of a 32-bit signed integer.
4.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"
正常处理负数的办法:使用补码即:UINT_MAX+num+1
然后不停的求除以16的余数即可
但这种方法有点复杂,最好的办法是使用二进制数,每次取四个换成16进制,这样就避免了计算负数
class Solution {
public:
/**
* @param num: an integer
* @return: convert the integer to hexadecimal
*/
string toHex(int num) {
// Write your code here
string result="";
for(int i=0;num&&i<8;++i){
int tmp=num&0xf;
if(tmp>=10) result=char('a'+tmp-10)+result;
else result=char('0'+tmp)+result;
num>>=4;
}
return result.empty()?"0":result;
}
};