/** @功能说明:n进制整数转换成十进制
* @参数: data_n n进制整数数据
* @参数: n 需要转换的进制 n小于等于10
* @返回值: 十进制数据
*/
uint32_t nBaseToDecimal(uint32_t data_n, uint8_t n)
{
uint32_t data_Decimal = 0; //十进制数
uint32_t y = 0; //余数(模)
for(uint8_t i = 0; data_n; i++)
{
y = data_n % 10; //求模
data_n /= 10;
if(y >= n) //模不能大于n
continue;
y *= (uint32_t)pow(n, i); //模乘以n的i次幂
data_Decimal += y; //求和
}
return data_Decimal;
}
测试程序
#include <stdio.h>
#include <stdint.h>
#include <math.h>
/** @功能说明:n进制整数转换成十进制
* @参数: data_n n进制整数数据
* @参数: n 需要转换的进制 n小于等于10
* @返回值: 十进制数据
*/
uint32_t nBaseToDecimal(uint32_t data_n, uint8_t n)
{
uint32_t data_Decimal = 0; //十进制数
uint32_t y = 0; //余数(模)
for(uint8_t i = 0; data_n; i++)
{
y = data_n % 10; //求模
data_n /= 10;
if(y >= n) //模不能大于n
continue;
y *= (uint32_t)pow(n, i); //模乘以n的i次幂
data_Decimal += y; //求和
}
return data_Decimal;
}
int main()
{
uint32_t data_n = 0;
int32_t n = 0;
printf("Input\n");
scanf("%d %d",&data_n, &n);
printf("%d", nBaseToDecimal(data_n, n));
return 0;
}