【leetcode】405. 数字转换为十六进制数

char * toHex(int num){
    if (num==0) return "0";
    char* retStr = (char*)calloc(sizeof(char),10);
    memset(retStr,'0',sizeof(char)*8);
    char mapping[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
    int i, pst=8;
    if (num>0)
    {
        while(num){
            retStr[--pst]=mapping[num%16];
            num/=16;
        }
        return retStr+pst;
    }
    else if(num<0){
        num+=2147483648;
        while(num){
            retStr[--pst]=mapping[num%16];
            num/=16;
        }
        retStr[0]=mapping[retStr[0]-'0'+8];
    }    
    return retStr;
}
原文地址:https://www.cnblogs.com/ganxiang/p/14035319.html