#include <i2a.h>


#define BASE10 10



void  u2a(char s[], unsigned int n)
{
	unsigned int nmbr,i1,i2;
	nmbr = 1;

	i1 = n;
	while (BASE10 <= i1) {
		nmbr++;
		i1 /=BASE10;
	}
	i1 = 0;
	nmbr--;
	while (BASE10 <= n) {
		i2 = n - BASE10 * (n / BASE10);
		s[nmbr-i1++] = (char)i2 + 0x30;
		n = n / BASE10;
	}
	s[nmbr - i1++] = (char)n + 0x30;
	s[nmbr+1] = 0x00;
}

void i2a(char s[], int n)
{
	
    if (n<0) { // neg or positive
    	s[0]='-';
    	n = -n;
    	s++;
    }
    u2a(s,(unsigned int)(n));
}

void ul2a(char s[], unsigned long n)
{
	unsigned long nmbr,i1,i2;
	nmbr = 1;

	i1 = n;
	while (BASE10 <= i1) {
		nmbr++;
		i1 /=BASE10;
	}
	i1 = 0;
	nmbr--;
	while (BASE10 <= n) {
		i2 = n - BASE10 * (n / BASE10);
		s[nmbr-i1++] = (char)i2 + 0x30;
		n = n / BASE10;
	}
	s[nmbr - i1++] = (char)n + 0x30;
	s[nmbr+1] = 0x00;
}


void l2a(char s[], long n)
{
	
    if (n<0) { // neg or positive
    	s[0]='-';
    	n = -n;
    	s++;
    }
    ul2a(s,(unsigned long)(n));
}
