回顾C语言005--把一个十进制的ASCII数字字串 转换为 HEX数字

在STM32单片机中,一个无符号(长)整型数据(u32 /uint32_t /unsigned int)拥有32位二进制数据,最大值为 0xFFFFFFFF = 0d4294967295。

//权计算函数
int Exp_10(unsigned char i)
{
	switch(i)
	{
//	case 10: return 1000000000;break;
	case 9:  return 100000000;break;
	case 8:  return 10000000;break;
	case 7:  return 1000000;break;
	case 6:  return 100000;break;
	case 5:  return 10000;break;
	case 4:  return 1000;break;
	case 3:  return 100;break;
	case 2:  return 10;break;
	case 1:  return 1;break;	//把个位看作第一位,返回10^0=1
	default: return 0;break;
	}
}

int _tmain(void)
{
	//应该考虑字符串代表的数值是否大于U32_MAX,但我懒
	unsigned char Data[] = "1114159265";  //数值=1114159265,注意字串的末尾有个隐藏的 \0,后面用sizeof计算长度时要减掉一
	unsigned int value = 0;
	//
	for(unsigned char i=0; i<sizeof(Data)-1; i++)
	{
		value += Exp_10(sizeof(Data)-1-i) * ((Data[i]<='9' && Data[i]>='0')?(Data[i]-'0'):(0));
	}
	//
	return value;
}

VS2012下运行成功截图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值