如何用C语言将一个十六进制数字转换为十进制
如何将一个十六进制数字转换为十进制,例如:给出0XFFFF,如何将其转化为65535输出?要求用C实现,急。。。...
如何将一个十六进制数字转换为十进制,例如:给出0XFFFF,如何将其转化为65535输出?要求用C实现,急。。。
展开
8个回答
展开全部
你可以设置一个字符串数组
char HEX[16] =
以后你得出的数字,比如余数y是10,那么HEX[y]打印出来就是A了
例子(现写的)
int now;
int res[100];//答案
int c = 0;//位数
输入到now;
while (now > 0)
{
res[c] = now % 16;
now = now / 16;
c++;
}
输出是:
for (i = 0; i < c; i++)
{
输出 HEX[res[i]];
}
算法的精髓都给你啦,好好理解吧
/**********************************************
**************** 补充 *****************
**********************************************/
改你的代码
#include "stdio.h"
void main()
{
char HEX[16] = ; //<----------------这里加了
int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);
int a[10]; //<----------------这里改了
int i=0;
int yushu;
while(num>0)
{
yushu=num%16;
a[i]=yushu;
num=num/16;
i++;/*关键的就在这里,这后面书上写的要用SWITCH,但是我用不好,请各位大虾指教*/
}
printf("转化为十六进制的数为:");
for(;i>=0;i--)//倒序输出
{
printf("%c",HEX[a[i]]); //<----------------这里改了
}
printf("\n");
}
char HEX[16] =
以后你得出的数字,比如余数y是10,那么HEX[y]打印出来就是A了
例子(现写的)
int now;
int res[100];//答案
int c = 0;//位数
输入到now;
while (now > 0)
{
res[c] = now % 16;
now = now / 16;
c++;
}
输出是:
for (i = 0; i < c; i++)
{
输出 HEX[res[i]];
}
算法的精髓都给你啦,好好理解吧
/**********************************************
**************** 补充 *****************
**********************************************/
改你的代码
#include "stdio.h"
void main()
{
char HEX[16] = ; //<----------------这里加了
int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);
int a[10]; //<----------------这里改了
int i=0;
int yushu;
while(num>0)
{
yushu=num%16;
a[i]=yushu;
num=num/16;
i++;/*关键的就在这里,这后面书上写的要用SWITCH,但是我用不好,请各位大虾指教*/
}
printf("转化为十六进制的数为:");
for(;i>=0;i--)//倒序输出
{
printf("%c",HEX[a[i]]); //<----------------这里改了
}
printf("\n");
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你将那个十六进制的数字赋值给一个int型的变量,就直接转化为int型的了。
如果用程序实现这个功能是不用的 计算机会直接转换的。
另外 输出的时候可以控制输出格式。
要注意下C语言的int型的阀值,不要越界。
如果用程序实现这个功能是不用的 计算机会直接转换的。
另外 输出的时候可以控制输出格式。
要注意下C语言的int型的阀值,不要越界。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把这个数字直接%d输出就是十进制的
比如你int ival = 0xFFFF;
int jval = ival;
jval 也就是等于你说的那个65535 不要转换啊,他们表示的就是一个数字
比如你int ival = 0xFFFF;
int jval = ival;
jval 也就是等于你说的那个65535 不要转换啊,他们表示的就是一个数字
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没心情写,给个思路好了。
先转为字串,得字串长度n,然后按
h(n)*16^n+h(n-1)*16^(n-1)+....求和。
要是老师不看过程,可按楼上的。
先转为字串,得字串长度n,然后按
h(n)*16^n+h(n-1)*16^(n-1)+....求和。
要是老师不看过程,可按楼上的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询