用位运算更加方便,给num取mod 16,可以用num&15求得,给num做除16可以用(num>>4)求得,但是要注意,如果是补码,在负数时,右移左边会自动补1,这样会出错,所以要自己给他做一下 & 运算 nnum&(0x0fffffff),之后,num为正数以后就不用考虑了
代码class Solution {
public:
string toHex(int num) {
string c="0123456789abcdef";
//负数就是
string ss="";
if(num==0)return "0";
while(num!=0){
int in=num&15;
num=(num>>4);
if(num<0){
num=(num&(0x0fffffff));
}
ss.insert(ss.begin(),c[in]);
}
return ss;
}
};



