求十进制数转化为十六进制数的程序?

xdxkxc 2005-06-22 10:33:50
求十进制数转化为十六进制数的程序(C编写)
...全文
810 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
megaboy 2005-06-22
  • 打赏
  • 举报
回复
唉,不写最省事...........
tian_su 2005-06-22
  • 打赏
  • 举报
回复
不过,其实这样子就够了,
#include "stdio.h"
void main() {
int n;
scanf("%d",&n);
printf("%0x",n); //用16进制输出(%0x)
}
tian_su 2005-06-22
  • 打赏
  • 举报
回复
在vc6.0下做的
#include "stdio.h"

void main() {
int n,i=0;
int d[10];
scanf("%d",&n);
while(n>0) {
d[i]=n%16;
n/=16;
i++;
}
for(i-=1;i>=0;i--) {
if(d[i]<10) {
printf("%d",d[i]);
}
else {
switch(d[i]) {
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
}
}
}
}
tiantang8201 2005-06-22
  • 打赏
  • 举报
回复
我这儿有能将2-36之间的数转换成8或16的

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>

/* 显示帮助信息 */
void help()
{
printf("\nUsage : Translate the number between two number systems\n");
printf("Syntex: TNS <number> <radix1> <radix2>\n");
exit(0);
}

/* 显示错误信息 */
void printerror(errno,num,base1)
char errno,*num,*base1;
{
switch (errno) {
case 1 : printf("\nError : Origin number %s(%s) is valid !!!\n",num,base1);
break;
case 2 : printf("\nError : radix (%s) is invalid !!!\n%s\n",base1,
"Correct : radix>=2 and radix <=36");
break;
}
help();
}

/* 数制转换函数 */
void transnum(num,base1,base2)
char *num,*base1,*base2;
{
int i,k,l,m,j,ibase1,ibase2;
long inum=0;
char temp[20];
double r=0;
i = strlen(num); /* 数值的长度 */
ibase1 = atoi(base1); /* 数基1 */
if ((ibase1<2) || (ibase1>36)) printerror(2,"",base1); /* 有效吗? */
ibase2 = atoi(base2); /* 数基2 */
if ((ibase2<2) || (ibase2>36)) printerror(2,"",base2); /* 有效吗? */
for (j=0;j<i;j++) {
r = pow(ibase1,i-j-1); /* 计算数基的幂指数 */
if (ibase1<=10) l =''9'' - (10 - ibase1); /* 计算有效的数范围 */
else {
m = ''a'' + (ibase1 - 11);
l = ''9'';
}
if ((num[j]>=48) && (num[j]<=l)) /* 求每位数字的十进制值 */
k = num[j]-48;
else if (ibase1>10) {
/* 求每个字母所代表的十进制值 */
if ((num[j]>=''A'') && (num[j]<=m - 32))
k = num[j] - ''A''+10;
else if ((num[j]>=''a'') && (num[j]<=m))
k = num[j] - ''a''+10;
else printerror(1,num,base1);
}
else printerror(1,num,base1);
inum += k * (int) r; /* 累加计算结果 */
}
/* 输出转换结果 */
printf("%s(%d) = %s(%d)\n",num,ibase1,ltoa(inum,temp,ibase2),ibase2);
}

/* 主程序 */
main(argc,argv)
int argc;
char *argv[];
{
static char num[10],base1[10],base2[10];
printf("(TNS)Translator of Number System 1.0 Copyright (c) 1995 Dong Zhanshan\n");
switch (argc) {
case 1:
case 2:
case 3: help();
break;
case 4: strcpy(num,argv[1]);
strcpy(base1,argv[2]);
strcpy(base2,argv[3]);
transnum(num,base1,base2);
}
}

69,370

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧