2 #include "int_to_string.h"
12 static char* DoIntToString(
unsigned long val,
char* bufhead)
15 const char digits[10] = {
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9'};
22 *(--bufhead) = digits[val % 10];
31 static const double log_10_of_2 = 0.30102995664;
32 static const unsigned ul_max_digits = (unsigned)
33 (8 *
sizeof(
unsigned long)
38 static const unsigned ul_max_digits = 10;
41 std::string IntToString(
unsigned long val)
43 static const unsigned bufsize = ul_max_digits + 1;
46 return DoIntToString(val, buffer + bufsize);
52 static unsigned long SafeAbs(
long val)
54 #if LONG_MAX + LONG_MIN >= 0
56 return (val >= 0) ? val : -val;
60 else if(val >= -LONG_MAX)
63 return LONG_MAX + (
unsigned long) (-(LONG_MAX + val));
67 std::string IntToString(
long val)
69 static const unsigned bufsize = ul_max_digits + 2;
72 char* bufhead = DoIntToString(SafeAbs(val), buffer + bufsize);