特现C语言编程特点的小代码,itoa,数值转换成字符串

时间:2023-03-09 21:51:57
特现C语言编程特点的小代码,itoa,数值转换成字符串
#define BASE_MAX (26 + 10)

char const* itostr(int x, int base)
{
/* map 居中, 支技负余数 */
static char const * const map =
"ZYXWVUTSRQPONMLKJIHGFEDCBA987654321"
      "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
      + (BASE_MAX - 1);
/* 静态缓冲,不支持多线程, 每次调用都覆盖上次的值 */
static char buf[BASE_MAX]; int oldx;
/* 从缓冲尾部逆向使用 */
char* p = buf + sizeof(buf) - ;
/* *p = '\0'; buf 是一个静态数组,默认初始化为0 */ /* 不合法的base返回空串 */
if (base < || base > ) {
return p;
} do {
/* 保存原数,用一次乘法取代取模*/
oldx = x;
x = x / base;
/* 先减后用 */
*--p = map[oldx - x * base];
} while (x); /* 负数的加上符号 */
if (oldx < ) *--p = '-'; return p;
}