将数字转换为16进制

给定一个整数,写一个函数将其转换为16进制。对于负整数,需要使用二进制补码

样例

样例1

输入:26
输出:"1a"

样例2

输入:-1
输出:"ffffffff"

注意事项

  1. 16进制的所有字母(a-f)必须为小写。
  2. 16进制字符串不能包含额外的前导0。如果数字为零,将它表示为单个字符'0';否则,16进制数的第一个字符不能为'0'
  3. 给定数字保证在32位有符号整数的范围内。
  4. 不能使用任何库中的函数,从而直接将给定数字转换为16进制。
class Solution {
public:
    /**
     * @param num: an integer
     * @return: convert the integer to hexadecimal
     */
    string toHex(int num) {
        // Write your code here
        string ret;
        if(num == 0)
        {
            return string("0");
        }
            
        char array[16] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
        
        int i = 0;
        for(i = 0; i < 8; i++)
        {
            int tmp = num & 0xF;
            ret = array[tmp] + ret;
            num >>= 4;
        }
        int j; 
        for(j = 0; j < ret.size(); j++)
        {
            if(ret[j] != '0')
                break;
        }
        if( j < ret.size())
            ret.erase(0,j);
        return ret;
    }
};

 

你可能感兴趣的:(LintCode)