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

参考技术D #include <stdio.h>
#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语言十进制转十六进制数的主要内容,如果未能解决你的问题,请参考以下文章

用c语言编写函数,将输入的十进制数转换成十六进制数并输出

C语言中,怎么把十进制转换成十六进制数

C语言 将十进制数转化为二进制数 程序代码

输入一个十进制数,输出该数的二进制数、八进制数、十六进制数

c语言16进制转换为10进制数的函数是啥?

C语言如何把11位16进制字符串转成16进制数?