当前位置:首页 » 编程语言 » c语言十进制转十六进制调用函数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言十进制转十六进制调用函数

发布时间: 2022-12-26 11:19:49

‘壹’ 用c语言如何把十进制转换为十六进制,要求程序中运用函数

**
程序功能:求二进制,十进制,八进制
创建人:蒲宇林
创建日期:2007年8月13日
**/
#include

void
two();
void
eight();
void
sixteen();
/**主函数**/
void
main()
{
int
select;
do
{
printf("0
-
退出,1
-
十进制转二进制,2
-
十进制转八进制,3
-
十进制转十六进制");
scanf("%d",&select);
switch(select)
{
case
1
:
two();
break;
//十进制转二进制
case
2
:
eight();
break;
//十进制转八进制
case
3
:
sixteen();
break;
//十进制转十六进制
default
:
printf("您的输入有误,请重新输入!");
break;
}
if(select
==
0)
{
break;
}
}while(1);
}
void
two()
{
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为二进制并存入数组
{
arr[i]
=
num
%
2;
num
=
num
/
2;
if(num
==
0)
{
break;
}
}
printf("转换为二进制:");
//打印
for(;
i
>=
0
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
eight()
{
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为八进制并存入数组
{
arr[i]
=
num
%
8;
num
=
num
/
8;
if(num
==
0)
{
break;
}
}
printf("转换为八进制:");
//打印
for(;
i
>=
0
;
i--
)
{
printf("%d",arr[i]);
}
printf("\n");
}
void
sixteen()
{
int
num,
i;
int
arr[20];
printf("\n请输入一个十进制数:");
scanf("%d",&num);
for(
i
=
0
;
1
;
i++)
//转换为二进制并存入数组
{
arr[i]
=
num
%
16;
num
=
num
/
16;
if(num
==
0)
{
break;
}
}
printf("转换为十六进制:");
//打印
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("\n");
}

‘贰’ 用C语言如何把十进制转换为十六进制,要求程序中运用函数

main()
{
void change(int s);
int num;
printf("请输入这个数:");
scanf("%d",&num);
printf("该数的十六进制形式为:0x%x\n",num);
//直接以十六进制的形式将整数输出
change(num);
}
void change(int s)
{ char num1[10];
sprintf(num1,"%x",s);
//sprintf()函数是将变量按指定的格式保存至字符串中。
printf("该数的十六进制形式为:0x%s\n",num1);
}
说明:
%d 以十进制形式输出整数
%o 以八进制形式输出整数
%x 以16进制形式输出整数

‘叁’ 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语言编写函数,将输入的十进制数转换成十六进制数并输出

//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intmain(void){
unsignedn,i,k;
printf("Pleaseenterapositiveinteger... n=");
scanf("%d",&n);
printf("%d(10)=0x",n);
if(n){
for(i=0;(n&0xf0000000)==0;n<<=4,i++);
for(;i<8;i++){
k=n&0xf0000000;
(k>>=28)&=0x0f;
printf("%c",k<10?k+'0':k+0x37);
n<<=4;
}
}
elseprintf("0");
printf(" ");
return0;
}

‘伍’ C语言调用函数编写把十进制整数n转换成十六进制怎么编程

思路:十进制整数转换为十六进制整数采用"除16取余,逆序排列"法。
具体做法是:用16整除十进制整数,可以得到一个商和余数;再用16去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为十六进制数的低位有效位,后得到的余数作为十六进制数的高位有效位,依次排列起来。

参考代码:

#include"stdio.h"
intmain()
{
intnum,a[100],i=0,m=0;
charhex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
scanf("%d",&num);
while(num>0)
{
a[i++]=num%16;
num=num/16;
}
printf("转化为十六进制的数为:");
for(i=i-1;i>=0;i--)//倒序输出
{
m=a[i];
printf("%c",hex[m]);
}
printf(" ");
}
/*
运行结果:
17
转化为十六进制的数为:11
*/

‘陆’ C语言十进制转十六进制

其实根本不用这个的,输出函数printf有X是代表输出16进制的数,可以直接调用,那样就能将10进制变成16进制!例如:
#include <stdio.h>
main ()
{
int a;
scanf ("%d",&a);
printf ("%X",a);
}

‘柒’ 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;}

(7)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语言十进制转化为十六进制

十进制转化为十六进制代码:

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

}

程序运行结果:

(8)c语言十进制转十六进制调用函数扩展阅读:

进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。

举例:二进制数转换为十进制数

二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……

所以,设有一个二进制数:0110 0100,转换为10进制为:

下面是竖式:

0110 0100 换算成十进制

第0位 0 * 20= 0

第1位 0 * 21= 0

第2位 1 * 22= 4

第3位 0 * 23= 0

第4位 0 * 24= 0

第5位 1 * 25= 32

第6位 1 * 26= 64

第7位 0 * 27= 0

公式:第N位2(N)

---------------------------

100

用横式计算为:

0 * 20+ 0 * 21+ 1 * 22+ 0 * 23+ 0 * 24+ 1 * 25+ 1* 26+ 0 * 27= 100

0乘以多少都是0,所以我们也可以直接跳过值为0的位:

1 * 22+ 1 * 25+1*26= 100

‘玖’ C语言讲一个十进制数转化为二,八,十六进制(函数调用

itoa()函数可以实现,根据itoa()第三个参数(2/8/10)可以进行二、八、十六进制的转换,转换后为字符串,如要求是int,可以用atoi实现字符串与int之间的转换
举例:
#include
"stdio.h"
#include
"stdlib.h"
int
main()
{
int
L1;
printf("输入数字\n");
scanf("%d",
&L1);
char
str1[256];
char
str2[256];
char
str3[256];
itoa(L1,
str1,
2);
itoa(L1,
str2,
8);
itoa(L1,
str3,
16);
printf("2进制:%s\n8进制:%s\n16进制:%s\n",str1,str2,str3);
return
0;
}

‘拾’ 用C语言编程如何将十进制转换成十六进制

int a=10;
printf("%X",a);
打印出的是A,也就是16进制的10