c中怎样把十进制数字转换为十六进制?

ccddd123 2001-12-21 02:29:48
rt
...全文
140 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixiaohua 2001-12-22
  • 打赏
  • 举报
回复
#include<iostream.h>
int main()
{
static char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int c[64];
long n;
int d,i=0,base;
cout<<"Enter a number:\n";
cin>>n;
cout<<"Enter new base:\n";
cin>>base;
do
{
c[i]=n%base;
i++;
n=n/base;
} while (n!=0);
cout<<"Transmite new base:\n";
for (--i;i>=0;--i)
{
d=c[i];
cout<<b[d];
}
cout<<"\n";
return 0;
}
这个够简练吧~!
虽说是C++地不过稍加修改就可以在C下运行了~!

rhesus 2001-12-22
  • 打赏
  • 举报
回复
the C programming language有讲的!!什么时候我抄一段上来
greening 2001-12-21
  • 打赏
  • 举报
回复
itoa在函数库<stdlib.h>中。函数原型是char*_itoa(int value,char*string,int radix);
value 欲转换的数值
string 存放转出来的结果
radix 转化为radix进制,范围必须在2---36之间
hz129 2001-12-21
  • 打赏
  • 举报
回复
char *line="";
char *buf="";
改为
char line[16];
char buf[10];

错误原因:line 和 buf未分配空间。
ccddd123 2001-12-21
  • 打赏
  • 举报
回复
请大虾给看看下面的代码,为什么会有写内存的错误?
(1.txt中是一些数字,格式如下:
1-255-3
3-245-4
...
)

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

int main(){

FILE *ifp=fopen("d:\\dmq\\1.txt","r");
FILE *ofp=fopen("d:\\dmq\\2.txt","w");

char *line="";
char *buf="";
int n1,n2,n3;

while(fgets(line,16,ifp)){
sscanf(line,"%d-%d-%d",&n1,&n2,&n3);
itoa(n1,buf,16);fputs(buf,ofp);
itoa(n2,buf,16);fputs(buf,ofp);
itoa(n3,buf,16);fputs(buf,ofp);
fputc('\n',ofp);
}
}




kinghawk 2001-12-21
  • 打赏
  • 举报
回复
好像是conio.h,又象是stdio.h,反正就是这两个之一了!
idAnts 2001-12-21
  • 打赏
  • 举报
回复
数字只有表现出来(交互)才有进制的说法,我这么认为.不知道对不对。
ccddd123 2001-12-21
  • 打赏
  • 举报
回复
itoa在那个头文件中?
mengxihe 2001-12-21
  • 打赏
  • 举报
回复
对!
kingfish 2001-12-21
  • 打赏
  • 举报
回复
itoa(n,buf,16);
or
sprintf(buf,"%x",n);

69,374

社区成员

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

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