解题思路:
(1)首先判断是否为0,是则返回“0”
(2)如果是正数,使用除K取余法
(3)如果是负数,使用其补码对应的无符号数来使用除K取余法
(4)例如四位,-6表示为1010,对应的无符号数为10000-110=1010,即pow(2,4)+(-6)
class Solution {
public:
string toHex(int num) {
if(num==0) return "0";
string s = "";
long long maxs = pow(2,32);
long long y = 0,nums = 0;
if(num<0) nums = maxs+num;
else nums = num;
while(nums!=0) {
y = nums%16;
switch(y) {
case 10: s='a'+s;break;
case 11: s='b'+s;break;
case 12: s='c'+s;break;
case 13: s='d'+s;break;
case 14: s='e'+s;break;
case 15: s='f'+s;break;
default: s=to_string(y)+s;break;
}
nums/=16;
}
return s;
}
};
版权声明:本文为coolsunxu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。