原题链接:
模拟:
class Solution {
public:
string toHex(int num) {
long long n=num;
if(n==0) return "0";
if(n<0) n+=0x100000000;
string s;
string dict="0123456789abcdef";
while(n)
{
int tmp=n%16;
n/=16;
s=dict[tmp]+s;
}
return s;
}
};
位运算:Leetcode 405. 数字转换为十六进制数 官解
class Solution {
public:
string toHex(int num) {
string s;
if(num==0) return "0";
string dict="0123456789abcdef";
for(int i=7;i>=0;i--)
{
int val=(num>>(4*i))&0xf;
if(s.size()>0 || val>0) s+=dict[val];
//s.size()>0是因为 如果输入为16 没有s.size()>0输出即为1,而正确输出应为10
}
return s;
}
};