c语言怎么样将一个十六进制转化成十进制

作者&投稿:苍昭 (若有异议请与网页底部的电邮联系)
c语言中如何将16进制字符串转化成10进制整数?~

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

16进制数转10进制数原理:
某16进制数共n位,第n位表示为Xn。转换后的10进制数表示为Y。
Y = Xn×16^0 + Xn-1×16^1 + Xn-2×16^2 + …… + X1×16^n-1。
#include #include #include /* 任意进制数转十进制数 *//* char *value : 其他进制数 *//* int *result : 转换后的十进制数 *//* int radix : 待转换的进制*/void others2Decimal (char *value, int *result, int radix) { int digit,i,j;*result = 0;for (i=strlen(value)-1,j=0; i>=0; i--,j++) {if (value[i]>='0' && value[i]='a' && value[i]='A' && value[i]<='Z')digit = value[i]-'A'+10;*result += digit*pow(radix,j);}}int main (void) {char *value;int radix=16,result;printf ("请输入16进制数:"); gets (value); putchar ('
'); puts ("================================================================
"); printf ("10进制转换结果:"); others2Decimal (value,&result,radix);printf ("%d
",result);putchar ('
');getch (); /*屏幕暂留*/return 0;}运行结果

i-x-1都应该改成x-i-1。楼主的意思就是乘以16的对应的位数次方呗,你仔细看看就知道应该是x-i-1
2、我们假设十位上是的数字是1,那么这个数代表了16,这时候用一个字符是无法表示的
也就是说,不能简单的用s[i]去存放原16进制的某位转换成10进制对应的数
一个简单的修改方法是,让func函数返回一个int型的数值,这个返回值就是对应的十进制数
具体代码见下

#include<stdio.h>
#include<string.h>
#include<math.h>
int func(char s[],int x);
void main()
{
char a[20];
int n;
int num;
printf("请输入一串十六进制数:");
scanf("%s",a);
n=strlen(a);
num=func(a,n);
printf("%s=%d",a,num);
}
int func(char s[],int x)
{
int i;
int num=0;
for(i=x-1;i>=0;i--)
{
if(s[i]>='0'&&s[i]<='9')
{
num+=(int)((s[i]-'0')*pow(16,x-i-1));
}
if(s[i]>='a'&&s[i]<='f'){
num+=(int)((s[i]-'a'+10)*pow(16,x-i-1));
}
if(s[i]>='A'&&s[i]<='F'){
num+=(int)((s[i]-'A'+10)*pow(16,x-i-1));
}
}
return num;
}

方法其实很简单,我就不写程序了。举例:char a;a中的数转化为十进制。判断a中数的ASCLL码是否大于等于080、小于等于089(就是判断是否为0-9),如果是则a中的数就是该数的十六进制数,否就判断a中数的ASCLL码是否大于等于097、小于等于102(就是判断是否为a-f),是就进行相应的计算输出,否就是无效数字,跳出执行。这是一位的十六进制数,如果是多位的话可能会稍微复杂些,我困死了,不想思考了。

16进制转化为10进制
(16进制数不能超过10位)
#include <stdio.h>
#include <string.h>
#include <math.h>
void main()
{
void GiveInstructions();
long ChangeHtoD(int n,char x[]);
int i,j,k;
long d;
char x[20];
clrscr();
GiveInstructions();
printf("Please Input an H number: ");
gets(x);
j=strlen(x)-1;
d=ChangeHtoD(j,x);
printf("\nThe result is: %ld\n",d);
printf("\n*********\nPress any key to quit.");
getchar();
}
void GiveInstructions()
{
printf("\n***********************************\n");
printf("\n\nThis programme gets an H number \nfrom user and changes it to D number.\n\n");
printf("\n\nNOTSE: The H number can not be more than 10-digit.\n\n");
printf("\n***********************************\n");
}
long ChangeHtoD(int n,char x[])
{
int i,j;
long r=0;
j=n;
for (i=0;i<=j;i++,n--)
{
if (x[i]>=48&&x[i]<=57) x[i]=x[i]-48;
if (x[i]>=65&&x[i]<=70) x[i]=x[i]-55;
if (x[i]>=97&x[i]<=102) x[i]=x[i]-87;
r=r+x[i]*pow(16,n);
}
return(r);
}
我也是在网上搜的,希望对你有帮助!

输出的时候把你的数 后面 这样改 例如:(int)x36

根本不需要转,在输出的时候用“%x”就可以了


C语言编程,编写一个将十进制数转换成十六进制数的小程序。(请指教,谢 ...
\/* 将译出在工作数组中的字符串复制到s *\/ for(j=0;(s[j]=buf[i])!='\\0';j++,i++);\/* 其中控制条件可简写成s[j]=buf[i] *\/ return j;} \/* 主函数用于测试函数 trans() *\/ int main(){ unsigned int num = 253;int scale[]={2,3,10,16,1};char str[33];int i;...

c语言题目:写出程序 要求从键盘上输入一个十到十万之间的整数,将其最...
include <stdio.h>int main(void){ int n,t,f; printf("Input n(int 9<n<100001)...\\nn="); if(scanf("%d",&n)!=1 || n<10 || n>100000){ printf("Input error, exit...\\n"); return 0; } for(t=n,f=1;t>9;f*=10,t\/=10); printf("T...

C语言如何将一个数字组成的字符串转变成十进制数
办法很多,提供三种供参考。一、直接使用库函数atoi将数字字符串转换成十进制整数。代码如下:include "stdio.h"#include "stdlib.h"\/\/调用库函数atoi要包含这个文件int main(int argc,char *argv[]){char a[]="478167831";printf("%d\\n",atoi(a));\/\/直接调用atoi将a转换为十进制整数return 0;...

c语言中如何将一个整数分解位数?
在C语言中,你可以通过数学运算来得到一个整数的个位、十位、百位等。以下是一个简单的示例,它展示了如何将一个整数分解为其个位、十位和百位:在这个程序中,我们使用了 %(取余)和 \/(除法)操作符来得到整数的各个位数。num % 10 返回 num 的个位数,num \/ 10 返回 num 去掉个位数后的新...

如何用C语言将一个十六进制数字转换为十进制
需要准备的材料分别有:电脑、C语言编译器。1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。2、在test.cpp文件中,输入C语言代码:int a = 0XFFFF;printf("%d", a);。3、编译器运行test.cpp文件,此时成功将十六进制数转换为十进制进行了输出。

C语言,使用数组,编写一个十进制正整数转换为二进制数的转换工具_百度知 ...
C语言程序如下:include<stdio.h> int main(){ int N,i,t;int a[100];scanf("%d",&N);for(i=0;N!=0;i++){ a[i]=N%2;N=N\/2;} for(t=i-1;t>=0;t--){ printf("%d",a[t]);} } 思路:反复地将n除以2取余数;将取出的余数用数组存放;由于先取出的是低位数据,后...

我有一个C语言程序 是把十进制转为二进制用的 怎么改变运行结果的位数...
if (b % 2 == 0 ){\/*如果10进制数被2整除*\/ b = b \/2;a[i] = '0'; \/*相应2进制数位置0*\/ }else{ b = (b -1)\/2;a[i] = '1'; \/*否则置1 *\/ } } printf("Result : %s\\n ",a+4);getch();} ...

C语言从键盘上输入一个十进制整数,求该整数的每一位数字之和。_百度知...
int a=234567890;int sum=0;for(int i=0;i<9;i++){ sum+=a%10;a\/=10;}

c语言中向一个数组中输入十个数怎么输入
include <stdio.h> int main(){ int i;int n[10];for(i=0;i<10;i++){ scanf("%d",&n[i]);\/\/scanf要的是地址,这里必须用&n[i],或者n+的方法,但不能n[i]} printf("%d",n[1]);return 0;}

C语言编程题 要无错误的运行 编写程序,输入一个十进制整数,将其变换...
下面的程序在TURBOC下调试通过:include <stdio.h> main(){ int x,i,j;char s[33];scanf("%d",&x);for (i=1;i<=32;i++) {s[32-i]='0'+x%2;x\/=2;} s[32]='\\0';printf("%s\\n",s);}

呼兰区17850949917: 写一个c语言程序,将十六进制数转化为十进制 -
百孔福路: #include<stdio.h> #define MAX 1000 void main() { int func(char s[]);int c,i=0,flag=0,flag1=1;char t[MAX];printf("请输入一个十六进制的数:\n");while((c=getchar())! ='\0'&&i<MAX&&flag1){ if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F') ...

呼兰区17850949917: 如何用C语言将一个十六进制数字转换为十进制 -
百孔福路: #include<iostream.h> #include<stdlib.h> int Dec(char[]); void main(void){ int i=0;char t[20]; cout<< "Input:"; cin.getline(t,20,'\n'); cout<< "Output:"<<Dec(t)<<endl; //输入十六进制数,输出十进制数 }int Dec(char s[]){ int i,n=0; for(i=0;s[i];i++){ if (...

呼兰区17850949917: C语言如何实现十六进制数到十进制数的转化? -
百孔福路: 可以根据16进制转10进制的算法(即各位位码值乘以位权之和)来实现该功能. 具体实现方法可以参考如下程序:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16#include <stdio.h> voidmain() {inthe;intre=0; // 保存转换为10进制的结果intk=16; // ...

呼兰区17850949917: 将十六进制转化为十进制的c语言语句 -
百孔福路: int n,i=0,a[16]; scanf("%x",&n); printf("Hex %x 's decimal is %i\n",n,n); //十六进制转十进制用printf()格式化输出就可以了,以上代码你加入到main()主函数中,加include包含就可以了

呼兰区17850949917: c语言怎么把16进制当10进制 -
百孔福路: 根据10进制转换为16进制的规则,编写C语言程序将10进制数转换为16进制数. 具体实现方法可参考如下程序: #includevoid main(){ int i, x; // x表示欲转换的10进制数 int data[10], index=0; // data数组存放转换后的16进制数,index表示下标 sc...

呼兰区17850949917: C语言中 如何让十六进制转十进制 -
百孔福路: #include<stdio.h> int main() { int i; int num=0; char c[100]; printf("十六进制转换十进制:请输入一串十六进制数\n"); scanf("%s",c); num = 0; for(i = 0; c[i] != 0 ;i++) { if(c[i]<'0' && c[i]>'F') { printf("输入错误\n"); return 0; } else if(c[i]<='9'&&...

呼兰区17850949917: C语言十六进制转十进制 -
百孔福路: #include "stdio.h" void main() { int n; scanf("%x",&n); //以十六进制形式接收输入的数 printf("%d\n",n);//以十进制形式输出数 }

呼兰区17850949917: c语言怎么把16进制转换为10进制 -
百孔福路: 举个例子: #include<stdio.h> main() {int x;x=0x18;printf("x=%d\n",x);getch; } 0x18转换成10进制为24 不懂的再追问吧..

呼兰区17850949917: c语言怎么样将一个十六进制转化成十进制 -
百孔福路: i-x-1都应该改成x-i-1.楼主的意思就是乘以16的对应的位数次方呗,你仔细看看就知道应该是x-i-12、我们假设十位上是的数字是1,那么这个数代表了16,这时候用一个字符是无法表示的 也就是说,不能简单的用s[i]去存放原16进制的某位转换...

呼兰区17850949917: 如何用C语言将一个16进制数转换成10进制数,要求用函数.
百孔福路: 输入%x,输出%d: #include "stdio.h" int f(int a) { printf("%d\n",a); } void main() { int a; printf("please input:\n"); scanf("%x",&a); f(a); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网