① 在c语言中用最简单的方法把十进制转化为十六进制

代码如下:

#include"stdio.h"
intmain()
{
intnum=0;
inta[100];
inti=0;
intm=0;
intyushu;
charhex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("请输入一个十进制整数:");
scanf("%d",&num);
while(num>0)
{
yushu=num%16;
a[i++]=yushu;
num=num/16;
}
printf("转化为十六进制的数为:0x");
for(i=i-1;i>=0;i--)//倒序输内出{
m=a[i];
printf("%c",hex[m]);
}
printf(" ");
}

程序运行结果:

扩展容资料

C语言中,十进制转换十六进制,可以先输入十进制整数,然后去拼十六进制,十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,只需把二进制除以16得到余数去上面定义的hex[16]数组进行取值接可以得到转换的数字。

② 用C语言编程实现10进制数值转16进制字符串

#include
<stdio.h>
#define
N
8
void
tran(int
num,int
k)
{
int
arr[N],i;
for
(i=0;i
<N;i++)
{
arr[i]=num%k;
num=num/k;
if
(num==0)
break;
}
printf("转换为%d进制数为:
",k);
for
(;i>=0;i--)
switch
(arr[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;
default:
printf("%d",arr[i]);
}
printf("
");
}
void
main()
{
int
num,choo;
loop:
printf("请选择功能:0.退出
1.十进制转二进制
2.十进制转八进制
3.十进制转十六进制
");
scanf("%d",&choo);
switch
(choo)
{
case
1:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran
(num,2);
goto
loop;
case
2:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran
(num,8);
goto
loop;
case
3:
printf("请输入要转换的十进制数:");
scanf("%d",&num);
tran
(num,16);
goto
loop;
case
0:break;
default
:
printf("输入有误!请重新输入!
");
goto
loop;
}
}

③ C语言编程:怎么把一个十进制数转换成为一个十六进制数

第一种:用来糊弄老师的,输入一个数采用16进制格式输出
#include <stdio.h>

int main()
{
int num = 0;

scanf("%d", &num);
printf("%x", num);

return 0;
}

第二种:
#include <stdio.h>
#include <string.h>

char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
void dToO(int, char*);

int main()
{
int dNum;
char oNum[100] = {0};

//输入一个十进制数
scanf("%d", &dNum);

//调用转换函数,将十进制转换成以字符串表示的十六进制
dToO(dNum, oNum);

//输出以字符串表示的16进制数据
printf("%s\n", oNum);

return 0;
}

void dToO(int dNum, char* oNum)
{
char temp[100] = {0};

for (int i = 0; (dNum) && (i < 100) ; i++) {
temp[i] = (dNum % 16);
if (temp[i] > 9) {
temp[i] = oNumTable[temp[i] - 10];
}
else{
temp[i] += '0';
}
dNum /= 16;
}

char* p = temp;
while (*(p+1)) p++;

for (int i = 0; p != temp - 1; i++, p--) {
oNum[i] = *p;
}
}

④ 求c语言将十进制数转换为16进制的函数

基本全部情况都考虑了,所以有点长,请耐心看完。代码可以直接拷贝试验,都已调试过,保证正确!


有3种方式实现,其中两种是使用系统函数,另一种是直接自己编写。

使用系统函数实现要加入#include <stdlib.h>,自己编写则不需要这个头文件。

下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。


利用系统函数有

1. char * itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:

charbuffer[33];//用于存放转换好的十六进制字符串,可根据需要定义长度

char*inttohex(intaa)
{
itoa(aa,buffer,16);
return(buffer);
}

2.sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:

charbuffer[33];//用于存放转换好的十六进制字符串,可根据需要定义长度

char*inttohex(intaa)
{
sprintf(buffer,"%x",aa);
return(buffer);
}

3. 自己编写

如果参数只要两位数的整数,那么很简单。代码如下:

charbuffer[3];//用于存放转换好的十六进制字符串。由于只要支持2位整数,所以长度3即可

char*inttohex(intaa)
{
if(aa/16<10)//计算十位,并转换成字符
buffer[0]=aa/16+'0';
else
buffer[0]=aa/16-10+'A';
if(aa%16<10)//计算个位,并转换成字符
buffer[1]=aa%16+'0';
else
buffer[1]=aa%16-10+'A';
buffer[2]='';//字符串结束标志
return(buffer);
}

如果参数是任意整数,由于计算方法是每次都除以16和对16取余数,余数以倒序的顺序排列就是结果,所以最佳方法是用递归函数(当然循环也可以,但需要最后再进行倒序)。递归代码如下:

charbuffer[33];//用于存放转换好的十六进制字符串,可根据需要定义长度

char*inttohex(intaa)
{
staticinti=0;
if(aa<16)//递归结束条件
{
if(aa<10)//当前数转换成字符放入字符串
buffer[i]=aa+'0';
else
buffer[i]=aa-10+'A';
buffer[i+1]='';//字符串结束标志
}
else
{
inttohex(aa/16);//递归调用
i++;//字符串索引+1
aa%=16;//计算当前值
if(aa<10)//当前数转换成字符放入字符串
buffer[i]=aa+'0';
else
buffer[i]=aa-10+'A';
}
return(buffer);
}


最后测试代码如下(以sprintf为例,其余只要替换inttohex函数中的代码内容即可):

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

charbuffer[33];//用于存放转换好的十六进制字符串,可根据需要定义长度

char*inttohex(intaa)
{
sprintf(buffer,"%x",aa);
return(buffer);
}

intmain()
{
intnum;
char*hex_str;
printf("Enteranumber:");
scanf("%d",&num);
hex_str=inttohex(num);
printf("Hexadecimalnumber:%sH ",hex_str);
return0;
}

可以直接拷贝试验,都已调试过,保证正确!

⑤ c语言编程 把十进制转换为十六进制

方法一:

#include<iostream>
#include <string>
using namespace std;


string DecIntToHexStr(long long num)
{ string str; long long Temp = num / 16; int left = num % 16; if (Temp > 0) str +=

DecIntToHexStr(Temp); if (left < 10) str += (left + '0'); else str += ('A' + left - 10); return str;}
string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i < str.size(); ++i) Dec =

Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()
{ string DecStr; while (cin >> DecStr) { cout << "0x" + DecStrToHexStr(DecStr); } return 0;}

方法二:


#include<iostream>
#include <string>
#include<vector>


#include <sstream>
#include <math.h>
using namespace std;int main()


{ string decStr; cin >> decStr; int num = stoi(decStr); vector<int>v; while (num) { int bit = num % 2; v.push_back(bit); num = num / 2; }


reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for (int j = i * 4; j < (i +

1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; } if (temp <= 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }

else { int zeroNum = 4 - v.size() % 4; for (int i = 0; i < zeroNum; ++i) v.insert(v.begin(), 0); for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for

(int j = i * 4; j < (i + 1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }
if (temp <= 9) { stringstream ss; string strTemp;

ss << temp; ss >> strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout << hexStr << endl; return 0;}

(5)c语言十进制转十六进制扩展阅读:


还有3种方式可以实现,其中两种是使用系统函数,另一种是直接自己编写。

下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。

利用系统函数有

1. char * itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:

char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}

2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:

char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}

3. 自己编写

如果参数只要两位数的整数,那么很简单。

代码如下:

#include <stdio.h>#include <stdlib.h> char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa)

{ sprintf(buffer, "%x", aa); return (buffer);} int main ()

{ int num; char * hex_str; printf ("Enter a number: "); scanf ("%d",&num); hex_str = inttohex (num); printf ("Hexadecimal number: %sH ", hex_str); return 0;}

⑥ C语言 十进制转十六进制

如果将一个数转化为一个字符串呢例如
17转化成十六进制的"11"这样可以满足你吧
char
*kk(int
p){
int
i=0;
char
*k=new
char[100];
do{
switch(p%16){
case
10:k[i]='A';
break;
case
11:k[i]='B';
break;
case
12:k[i]='C';
break;
case
13:k[i]='D';
break;
case
14:k[i]='E';
break;
case
15:k[i]='F';
break;
default:
k[i]=(p%16)+'0';
break;
}
i++;
p/=16;
}while(p!=0);
k[i]='\0';
for
(int
j=0;j
评论
0
0
加载更多

⑦ 10进制转16进制c语言

用一个抄字符数组,初始化为“袭1,2,3,4,5,6,7,8,9,A,B,C,D,E,F”,也就是0到15
用十进制的数不断模上16,得到的余数进入到一个栈中。计算完之后从栈中取值,在数组当中去找出数字,输出就可以了

⑧ C语言十进制转十六进制数

#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);

*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(" ");

}

int main()

{

int rec=0;

int *p;

while(1){

printf("请输入一个十进制数字:");

scanf("%d",&rec);

p = ahex(rec);

print_hex(p);

}

return 0;

}

(8)c语言十进制转十六进制扩展阅读

十进制转二进制

#include<stdio.h>

int main(void)

{

int i=0,n,a[32];

printf("请输入一个十进制整数. ");

scanf("%d",&n);

while (n>0)

{

a[i]=n%2;

i=i+1;

n=n/2;

}

printf("十进制整数转换为二进制数是: ");

for(i--;i>=0;i--)

printf("%d",a[i]);

printf(" ");

return 0;

}

⑨ 关于C语言十进制转十六进制

for(l=i;l!=0;l--)
少侠,你这个l的初值赋错了,应该是l=i-1进;判定条件也错了是l>=0,因为你m是从0开始的,而上个循环结束后,i指向的实际是数组结尾的\0.。。
另外,你要是想输出8进制和16进制数,printf("%o
%X");就可以了,不用这么费劲吧。。