字符串与整形的转换

在单片机使用中,经常会用到串口助手,也需要整数与字符串的转换与显示,字符串转整形,整形转字符串,常用的库函数:

字符串转整型(十进制转换):
函数原型:

int atoi( const char *string );

string :要转换的字符串
返回值:转换结果

整型转字符串:
函数原型:

char *_itoa( int value, char *string, int radix );

value: 整数,转换对象
string: 转换结果
radix:(转换的基数,取值范围2-36)

c语言实现:


//函数功能:字符串转整形,十或十六进制(递归实现)
//入口参数:
//			str:要转换的字符串
//			num:转换类型,10.十进制转换;16:十六进制转换
//返回值:	转换结果
///

unsigned int  My_atoi(const char *str, char num)
{
	int ret = 0;
	int i = 0;

	if (str == NULL || *str == '\0')return 0;
	else
	{	
		if ('a' <= str[0] && str[0] <= 'z')  //得到对应的十六进制数
		{
			ret = str[0] - 'W';
		}

		else if('0' <= str[0] && str[0] <= '9')//得到对应的十进制数
		{
			ret = str[0] - '0';
		}

		else if ('A' <= str[0] && str[0] <= 'Z')//得到对应的十六进制数
		{
			ret = str[0] - 55;
		}

		while (*(str + i + 1) != '\0')  //确定该位所在的位置
		{
			i++;
		}

		if (num==10) //转换为十进制
		{
			if (ret > 9) exit(1);//参数输入错误
			ret *= pow(10, i); //十进制转换
			return ret + My_atoi(str + 1, 10);
		}
	
		if (num==16)//转换为十六进制
		{
			ret *= pow(16, i);//十六进制转换
			return ret + My_atoi(str + 1, 16);
		}
	}
}
///
//函数功能:整形转字符串(十进制)
//入口参数:
//		value:要转换的整数
//		buf:   转换后的字符串保存位置
//      N:	   整数的位数
//返回值:
//		无
//

void My_itoa_For(unsigned int value, char buf[] , int N)  
{
	int i = 0;
	int j = 0;
	for (int j=N;j>0;j--)
	{		
		//将整数value的第j位转换为字符:最低位为1(整数value第n位 = value%10^n/10^(n-1))
		buf[i++] = (value %  (int)pow(10, j) )/ (int)pow(10, j - 1)+ '0';
	}
	buf[N] = '\0';
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值