力扣
思路如果将正数和负数分开考虑,负数转补码比较困难,不容易实现。在这里正数和负数统一讨论,把四个二进制数看作一组,和0xf做与运算,从高位开始计算。为了避免首位出现0,要设置条件把字符插入字符串里。如果当前数不是0或者字符串长度大于0,就进行操作。
代码class Solution {
public:
string toHex(int num) {
if(num==0)
return "0";
string str;
int data;
char digit;
for(int i=7;i>=0;i--){
data=(num>>(4*i))&0xf;
if(str.length()>0||data!=0){
digit=data>=10?('a'+data-10):('0'+data);
str.push_back(digit);
}
}
return str;
}
};


