blob: 57f0c22b601f9a3200176ab35de283874dbc3158 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
#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;
}
|