当前位置:首页 » 编程语言 » 十六进制转十进制c语言

十六进制转十进制c语言

发布时间: 2022-04-20 12:59:42

❶ 用c语言编写一个将十六进制数转换为十进制数的程序

直接用printf就可以实现啊02x。0表示右对齐不够的左边补0;2代表以两位数显示;x代表以16进制显示
#include
int
main(int
argc,
char*
argv[])
{
int
i=17;
printf("%02x\n",i);
system("pause");
return
0;
}

❷ c语言中十六进制怎么转换成十进制

#include<stdio.h>
#include<math.h>
#include<string.h>

/*任意进制数转十进制数*/
/*char*value:其他进制数,以字符串形式存储*/
/*int*result:转换后的十进制数*/
/*intradix:待转换的进制*/
/*R进制数共n位,第n位表示为Xn。转换后的10进制数表示为Y*/
/*Y=Xn*R^0+Xn-1*R^1+Xn-2*R^2+……+X1*R^n-1*/
voidothers2Decimal(char*value,int*result,intradix){
intdigit,i,j;

*result=0;
for(i=strlen(value)-1,j=0;i>=0;i--,j++){
if(value[i]>='0'&&value[i]<='9')
digit=value[i]-'0';
if(value[i]>='a'&&value[i]<='z')/*十以上进制处理,小写字母*/
digit=value[i]-'a'+10;
if(value[i]>='A'&&value[i]<='Z')/*十以上进制处理,大写字母*/
digit=value[i]-'A'+10;
*result+=digit*pow(radix,j);
}
}

intmain(void){
char*value="ff";
intradix=16,result;

printf("16进制数:%s 10进制转换结果:",value);
others2Decimal(value,&result,radix);
printf("%d ",result);
putchar(' ');

getch();/*屏幕暂留*/
return0;
}

运行结果

❸ 如何用C语言将一个十六进制数字转换为十进制

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

❹ c语言中16进制转换为十进制

最简单的使用scanf()函数和printf()函数进行格式转换,以16进制格式输入,再以10进制格式输出。

程序代码如下:

#include<stdio.h>

int main()

{

int a=0;

int i=0;

scanf("%x",&a);

printf("%d",a);

return 0;

}

运行结果:

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

scanf函数与printf函数的用法很像,都是以格式化的形式进行操作,例如上述程序中scanf("%x", &a);就是将输入数据以十六进制格式存储到变量a中。

"%x"是将字符串A23CD以十六进制形式输入a中,如果将"%x"换成为"%d"的话,就是将字符串A23CD以十进制形式输入a中,这显然是错误的,因为将A23CD转换为十进制的时候,无法解析A,CD等字符,所以得出的结果就是错误的。

❺ 十六进制转十进制,C语言

#include<stdio.h>
#include <stdlib.h> //system 包含
#include<math.h>
double transition(char*); //声明还是提到函数外
int main(){
char str[10];
double a;

printf("Enter the hexadecimal number: ");
gets(str);
a=transition(str);
printf("%.0lf\n",a); //输出double要用%lf
system("pause");

return 0; //main返回
}
double transition(char str[]){
int i=0,n,x;
double sum=0;
int trans_char_dig(char);
while(str[i]!=0){
i++;
}
n=i;
while(i>0){
x=trans_char_dig(str[n-i]);
sum=x*pow(16,i-1)+sum;
i--;
}
return sum;
}
int trans_char_dig(char c){
if(c>=48&&c<=57){
return c-48;
}
else if(c>=65&&c<=70){
return c-55;
}
else if(c>=97&&c<=102){
return c-87;
}
else{
printf("error!");
exit(0);
}
}

❻ C语言如何实现十六进制数到十进制数的转化

可以根据16进制转10进制的算法(即各位位码值乘以位权之和)来实现该功能。


具体实现方法可以参考如下程序:

#include<stdio.h>
voidmain()
{
inthe;
intre=0;//保存转换为10进制的结果
intk=16;//16进制
intn=1;//位权
scanf("%d",&he);//接收用户输入的16进制数,不含0x前缀
while(he!=0)
{
re+=(he%10)*n;//取出各位位码值,并乘以对应的位权值
he/=10;//去掉16进制数的最低位,次低位变为最低位
n*=k;//位权乘以16
}
printf("%d",re);//输出转换后的结果
}

❼ C语言如何实现十六进制转换成十进制

C语言实现十六进制转换成十进制如下:

例如将十六进制数字 9FA8C 转换成十进制

9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)。

从右往左看,第1位的位权为 160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… 第n位的位权就为 16n-1。

将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方。

所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。

再例如:十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)。



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

C语言10进制转16进制

把十进制的数不停除以16的余数按从右到左的顺序排起来就是16进制,例如:55/16=0余5例如100 100/16=6余4 6/16余6,所以就是64,再例如1000 1000/16=62余8 62/16=3余12 3/16余3所以结果是3C8 //。

对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。

对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。

❽ C语言编程 十六进制转化成十进制

#include<iostream>
using namespace std;
int cf(int a,int b)//这是算乘方的函数,返回的结果为a的b次方
{
int x=1,i;
for (i=1;i<=b;i++)
x*=a;
return x;
}
int zhuanhuan(char a)
{
if (a-'0'>=0&&a-'0'<=9)
return a-'0';
else switch(a)
{
case 'A':return 10;
case 'B':return 11;
case 'C':return 12;
case 'D':return 13;
case 'E':return 14;
case 'F':return 15;
}
}
int main()
{
char a[100];//用字符数组存储这个数操作方便
int l,i,s=0,t;
scanf("%s",a);
l=strlen(a);//测量这个数的长度,即位数
for (i=0;i<l;i++)
{
//把字符类型的变量转换成整数类型
t=zhuanhuan(a[i]);
s+=t*cf(16,l-i-1);//依次累加
}
printf("%d\n",s);
return 0;
}

❾ 十六进制数转换成十进制数C语言

程序代码:#include <stdio.h>
#include <stdlib.h>
#include <math.h>/*求字符串长度函数*/
int strlengh(char *s)
{
int i;
for(i=0;s[i]!='\0';i++);
return i;
}/*16进制转10进制函数*/
double tran(char *s)
{
int len=strlengh(s);/*求输入的字符串的长度*/
int ss[100] ;/*用于存放对字符的转换如f:15*/
int i;
double n=0.0;
/*对字符进行处理,将其每一位转换为整数,之后运算进行处理*/
for(i=0;i<len;i++)
{
if(s[i]=='F'||s[i]=='f')ss[i]=15;
else if(s[i]=='E'||s[i]=='e')ss[i]=14;
else if(s[i]=='D'||s[i]=='d')ss[i]=13;
else if(s[i]=='C'||s[i]=='c')ss[i]=12;
else if(s[i]=='B'||s[i]=='b')ss[i]=11;
else if(s[i]=='A'||s[i]=='a')ss[i]=10;
else ss[i]=(int)s[i];
}
/*对转换得到的整数进行转换处理*/
for(i=0;i<len;i++)
{
n+=ss[i]*pow(16,len-1-i);
}
return n;/*结果返回*/
}void main()
{
/*接收16进制数*/
char Hex[100];
printf("Please input Hex:\n");
gets(Hex);
/*转换*/
int Dec=(int)tran(Hex);
printf("Output Result:%d\n",Dec);}执行结果:

❿ c语言16进制与10进制的转换

这个函数的int HtoD(char *a);就是将16进制的数用字符数组保存,把数组首地址作为参数传递给函数,函数返回转换后的10进制整型数值。

详细说明,我写在备注里了,你看以参考。

#include<stdio.h>
#include<string.h>
intHtoD(char*a)//将16进制的数字用字符串保存,并将字符串首地址作为参数传递
{
intnum=0,i;
for(i=0;i<strlen(a);i++)//迭代迭代次数为a数组的长度形参a是指针,初值是指向字符数组的首地址,也就是指向16进制数字的左边第1位
{
//每次迭代取指针指向的地址值进行判断,同时指针不断往右移动
if(*(a+i)>='0'&&*(a+i)<='9')//如果当前位是0~9的数字,那么总数值num累加同时前值*16(因为左边是高位,从高位往低位数,每多1位高位就*16)
num=num*16+*(a+i)-'0';
elseif(*(a+i)>='A'&&*(a+i)<='Z')//如果当前位是大写字母A~Z,转换成10进制数值,再累加
num=num*16+*(a+i)-'A'+10;
elseif(*(a+i)>='a'&&*(a+i)<='z')//如果当前位是小写字母a~z,转换成10进制数值,再累加
num=num*16+*(a+i)-'a'+10;
else
return-1;//表示输入错误的数
}
returnnum;
}
intmain()
{
chara[]="1F";
printf("1F=%d",HtoD(a));//这里我写了简单的调用,打印结果:1F=31
return0;
}
热点内容
电脑服务器的品牌型号怎么查 发布:2024-04-28 04:33:06 浏览:138
文件上传ui 发布:2024-04-28 04:07:14 浏览:482
我的世界pe登服务器 发布:2024-04-28 04:05:58 浏览:672
如何监控数据库 发布:2024-04-28 03:44:07 浏览:28
测温一体机怎么配置 发布:2024-04-28 03:11:56 浏览:591
大生活迅雷下载ftp 发布:2024-04-28 03:11:09 浏览:511
python如何生成随机数 发布:2024-04-28 02:21:59 浏览:169
小雨游戏解说我的世界服务器 发布:2024-04-28 02:08:12 浏览:877
安卓怎么删除账户 发布:2024-04-28 02:06:50 浏览:829
内存解压缩 发布:2024-04-28 01:58:10 浏览:867