#include "string.h" int ltostr(char *s, int size, unsigned long l, bool sign, int radix) { unsigned wsize = 0; unsigned digits = 0; if((long)l < 0 && sign) { l = -((long)l); if(size > wsize && s != 0) s[wsize] = '-'; wsize++; } for(unsigned long lv = l; lv != 0; lv /= radix) { digits++; } if(digits-- == 0) { if(size > wsize && s != 0) s[wsize] = '0'; wsize++; } for(unsigned long lv = l; lv != 0; lv /= radix) { int digit = lv % radix; if(size > digits - wsize && s != 0) { s[digits - wsize] = (digit >= 10 ? (digit + 'a' - 10) : digit + '0'); } wsize++; } if(size > wsize && s != 0) s[wsize] = 0; return ++wsize; }