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; }