https://leetcode.com/problems/convert-a-number-to-hexadecimal/description/
题目
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s complement method is used.
Note:
- All letters in hexadecimal (a-f) must be in lowercase.
 - The hexadecimal string must not contain extra leading 0s. If the number is zero, it is represented by a single zero character ‘0’; otherwise, the first character in the hexadecimal string will not be the zero character.
 - The given number is guaranteed to fit within the range of a 32-bit signed integer.
 - You must not use any method provided by the library which converts/formats the number to hex directly.
 
Example 1:
Input:
26
Output:
"1a"
Example 2:
Input:
-1
Output:
"ffffffff"
题目翻译
题目解析
参考答案
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
    char toChar(unsigned int iNum)
    {
        if (iNum < 10)
        {
            return iNum + '0';
        }
        else
        {
            return iNum - 10 + 'a';
        }
    }
    string toHex(int num) {
        string strRet;
        unsigned int uiNum = num;
        unsigned int iRemainder =  uiNum;
        unsigned int iComplement = 0;
        while (1)
        {
            if (iRemainder < 16)
            {
                strRet.append(1, toChar(iRemainder));
                break;
            }
            else
            {
                iComplement = iRemainder % 16;
                iRemainder = iRemainder / 16;
                strRet.append(1, toChar(iComplement));
            }
        }
        int i = 0;
        int j = strRet.size() - 1;
        while (i < j)
        {
            int temp = strRet[i];
            strRet[i] = strRet[j];
            strRet[j] = temp;
            i++;
            j--;
        }
        return strRet;
    }
};
int main()
{
    Solution o;
    string strRet = o.toHex(-1);
    cout << strRet << endl;
    return 0;
}