C语言十进制转十六进制数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言十进制转十六进制数相关的知识,希望对你有一定的参考价值。
void dec2hex(int n,char *buf) ;
要求:
如n = 16; buf[0] = 0; buf[1] = A; “0A”;
不能用函数,上面积错了。 n = 10 那么buf = "0A"; n = 17 --- buf = "11"
C语言十进制转十六进制数的源代码如下:
#include<bits/stdc++.h>
using namespace std;
void IntZh0x(int n)
int s=n%16;
if(n/16!=0) IntZh0x(n/16);
if(s>9)
if(s==15) cout<<"F";
else if(s==14) cout<<"E";
else if(s==13) cout<<"D";
else if(s==12) cout<<"C";
else if(s==11) cout<<"B";
else if(s==10) cout<<"A";
else cout<<s;
int main()
int n;
cin>>n;
IntZh0x(n);
return 0;
扩展资料
1、十六进制数转换成十进制数解,其值为各个位码乘以位权然后完全相加。
2、十六进制就是把 4 个二进制位组合为一位来表示,每一位有0b0000 ~ 0b1111 共 16 个值,用 0 ~ 9 再加上 A ~ F(或 a ~ f)表示,那么它自然就是逢十六进位,它本质上同二进制是一样的,是二进制的一种缩写形式。
参考技术A#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
int* ahex(int dec)
int n=1;
int m=16;
int *a;
a = (int*)malloc(sizeof(int)*MAXSIZE+1);
while(dec >= m)
m = m*16;
n++;
//printf("位数:%d\\n",n);
*a = n;
while(n>0)
*(a+n)= dec/(m/16);
dec = dec-*(a+n)*(m/16);
n--;
m = m/16;
return a;
void print_hex(int *p)
int n = *p;
printf("hex: 0x");
while(n>0)
switch(*(p+n))
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;
default: printf("%d",*(p+n));break;
n--;
printf("\\n");
int main()
int rec=0;
int *p;
while(1)
printf("请输入一个十进制数字:");
scanf("%d",&rec);
p = ahex(rec);
print_hex(p);
return 0;
扩展资料
十进制转二进制
#include<stdio.h>
int main(void)
int i=0,n,a[32];
printf("请输入一个十进制整数.\\n");
scanf("%d",&n);
while (n>0)
a[i]=n%2;
i=i+1;
n=n/2;
printf("十进制整数转换为二进制数是:\\n");
for(i--;i>=0;i--)
printf("%d",a[i]);
printf("\\n");
return 0;
参考技术B #include<stdio.h>char tohex(int n)
if(n>=10 && n<=15)
return 'A'+n-10;
return '0'+n;
void dec2hex(int n,char *buf)
int i=0;
int mod;
while(n)
mod = n%16;
buf[i++]=tohex(mod);
n=n/16;
//得进行反序。
int j,k;
for(j=0,k=i-1;j<i/2;j++,k--)
char temp;
temp = buf[j];
buf[j] = buf[k];
buf[k] = temp;
buf[i]='\0';
int main()
int n;
scanf("%d",&n);
char a[32];
dec2hex(n,a);
printf("%s",a);
return 0;
本回答被提问者和网友采纳 参考技术C #include <stdio.h>
void dec2hex(int n,char *buf)
char t;
char *p=buf;
while(n)
t=n%16;
*buf++=t<10?t+'0':t-10+'A';
n/=16;
*buf++='0';
*buf--='\0';
while(p<buf)
t=*p;
*p=*buf;
*buf=t;
++p;
--buf;
main()
int n;
char buf[100];
scanf("%d",&n);
dec2hex(n,buf);
printf("%s\n",buf);
追问
不什么n = 16 ,buf 却是 "01"不应该是“0F”么;
追答F==15啊,同学
16的话,是10H
#include <string.h>
void dec2hex(int n,char *buf)
sprintf(buf, "%02x", n);
int main()
int n = 16;
char buf[3] = 0;
dec2hex(n, buf);
printf("buf = %s\n", buf);
return 0;
以上是关于C语言十进制转十六进制数的主要内容,如果未能解决你的问题,请参考以下文章