// val: integer that needs to be converted to string representation
// destBuffer: buffer where the output string will be written
// radix: is the radix of the numbering system (10 for decimal, 16 for Hexadecimal,
// 2 for binary)

char * my_itoa(int val, char * destBuffer, int radix)
{
   if(val == 0)
   {
      destBuffer = "0";
      return destBuffer;
   }

   bool isNeg = false;
   // if input integer is negative set the isNeg flag and make it positive
   // we will do the conversion using the absolute value and then append the
   // the - sign in the end
   if(val < 0)
   {
      isNeg = true;
      val *= -1; 
   }

   char *currentDest = destBuffer;

   while(val > 0)
   {
     int digit = val % radix;
     val /= radix;
     *currentDest = (char) (digit + '0');
     currentDest++;
   }

   if(isNeg)
   {
     *currentDest = '-';
     currentDest++;
   }

   *currentDest = '';
   reverse(destBuffer);
   return destBuffer;
}

 

END