在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下运行成功截图