Chinaunix首页 | 论坛 | 博客
  • 博客访问: 500737
  • 博文数量: 119
  • 博客积分: 5054
  • 博客等级: 大校
  • 技术积分: 1305
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-03 13:13
文章分类

全部博文(119)

文章存档

2011年(4)

2010年(115)

我的朋友

分类: C/C++

2011-01-19 22:23:03

参考:~slowe/cpp/itoa.html

// 整型数值转位宽为size的2~16进制字符串,前导0填充对齐。
char* simple_itoa(int value, char* result, int base, int size)
{
	int i;
	int n;
	char* ptr = result;
	char* ptr1 = result;
	char tmp_char;
	int tmp_value;
	//check that the base if valid
	if (base < 2 || base > 16)
	{
		*result = '\0';
		return result;
	}
 
	do {
		tmp_value = value;
		value /= base;
		*ptr++ = "0123456789abcdef"[tmp_value - (value*base)];
	} while (value);
 
	if (tmp_value < 0) *ptr++ = '-'; //Apply negative sign
 
	*ptr = '\0';
	n = strlen(result);
	if (n < size)
	{
		for (i=0; i < (size-n); i++)
		{
			*ptr++ = '0';
		}
		*ptr = '\0';
	}
 
	ptr--;
	while (ptr1 < ptr) {
		tmp_char = *ptr;
		*ptr-- = *ptr1;
		*ptr1++ = tmp_char;
	}
 
	return result;
}
阅读(1917) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~