您的位置:首页 > 编程语言 > C语言/C++

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

2014-03-15 20:19 441 查看
#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) - 1;
/* *p = '\0'; buf 是一个静态数组,默认初始化为0 */

/* 不合法的base返回空串 */
if (base < 2 || base > 36) {
return p;
}

do {
/* 保存原数,用一次乘法取代取模*/
oldx = x;
x = x / base;
/* 先减后用 */
*--p = map[oldx - x * base];
} while (x);

/* 负数的加上符号 */
if (oldx < 0) *--p = '-';

return p;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: