如何把16进制数转化为10进制,c语言编写
3个回答
展开全部
16进制数转10进制数原理:
某16进制数共n位,第n位表示为Xn。转换后的10进制数表示为Y。
Y = Xn×16^0 + Xn-1×16^1 + Xn-2×16^2 + …… + X1×16^n-1。
#include <stdio.h>
#include <math.h>
#include <string.h>
/* 任意进制数转十进制数 */
/* char *value : 其他进制数 */
/* int *result : 转换后的十进制数 */
/* int radix : 待转换的进制*/
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;
int radix=16,result;
printf ("请输入16进制数:");
gets (value);
putchar ('\n');
puts ("================================================================\n");
printf ("10进制转换结果:");
others2Decimal (value,&result,radix);
printf ("%d\n",result);
putchar ('\n');
getch (); /*屏幕暂留*/
return 0;
}
运行结果
展开全部
可以用<stdlib.h> 中的char*_itoa(intvalue,char*string,intradix);把整型转换为其他进制的字符串参考代码:
#include<stdio.h>
#include<stdlib.h> //包含_itoa的头文件
int main()
{
int a=110;
char p[20];
_itoa(110,p,16); //16表示16进制,还可以用2、8、10
printf("%s",p);
return 0;
}
#include<stdio.h>
#include<stdlib.h> //包含_itoa的头文件
int main()
{
int a=110;
char p[20];
_itoa(110,p,16); //16表示16进制,还可以用2、8、10
printf("%s",p);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <string.h>
#include <math.h>
int main() {
char *Hex = "27c";
int i, Dec = 0, t = 0;
for (i = 0; i < strlen(Hex); i++){
switch (Hex[i]){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
t = (int)Hex[i] - 48;
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
t = (int)Hex[i] - 87;
default:
puts("Error");
}
Dec += t * pow(16, strlen(Hex) - i - 1);
}
printf ("%d", Dec);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询