
c语言中十六进制怎么转换成十进制
2个回答
展开全部
#include <stdio.h>
#include <math.h>
#include <string.h>
/* 任意进制数转十进制数 */
/* char *value : 其他进制数,以字符串形式存储 */
/* int *result : 转换后的十进制数 */
/* int radix : 待转换的进制 */
/* R进制数共n位,第n位表示为Xn。转换后的10进制数表示为Y */
/* Y = Xn*R^0 + Xn-1*R^1 + Xn-2*R^2 + …… + X1*R^n-1 */
void others2Decimal (char *value, int *result, int radix) {
int digit,i,j;
*result = 0;
for (i=strlen(value)-1,j=0; i>=0; i--,j++) {
if (value[i]>='0' && value[i]<='9')
digit = value[i]-'0';
if (value[i]>='a' && value[i]<='z') /* 十以上进制处理,小写字母 */
digit = value[i]-'a'+10;
if (value[i]>='A' && value[i]<='Z') /* 十以上进制处理,大写字母 */
digit = value[i]-'A'+10;
*result += digit*pow(radix,j);
}
}
int main (void) {
char *value="ff";
int radix=16,result;
printf ("16进制数:%s\n10进制转换结果:",value);
others2Decimal (value,&result,radix);
printf ("%d\n",result);
putchar ('\n');
getch (); /*屏幕暂留*/
return 0;
}
运行结果
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询