int num2str(int num, char *str, unsigned int minlen, unsigned int maxlen) { unsigned int i,d,n,k; /* sanity check */ if(num<0 || minlen==0 || maxlen==0) { *str='\0'; return(0); } /* safe method to get the divisor */ for(n=d=1,i=1;i<maxlen && !(d>1 && (d/n)!=10);i++,n=d,d*=10) ; if(d>1 && (d/n)!=10) { i--; d=n; } /* extract the digits */ for(k=0;d>0;i--,d/=10) { n=(((unsigned int)num)/d)%10; if(n!=0 || minlen>=i) { str[k++]=n+'0'; minlen=i; } } /* terminate string */ str[k]='\0'; return(k); } int hexnum2str(int hexnum, char *str, unsigned int numdigits) { int k,s; int c; if(hexnum<0 || numdigits==0) { *str='\0'; return(0); } for(k=0,s=(numdigits-1)*4;k<numdigits;k++,s-=4) { c=(((unsigned int)hexnum)>>s)&0xf; str[k]=((c<10)?(c+'0'):(c+'a'-10)); } str[k]='\0'; return(k); }