进制转换:16进制转10进制
1 //2018 0306 2 C语言 十六进制字符串转十进制 3 需求:比如我有一个字符串,定义为char * a=“2B4AFF8071”,里面是十六进制表示, 4 我要每次依次取其中两位比如 2B,转换成十进制“43”,然后再存入另一个字符串char *b或 5 字符数组char b[],接着取4A,依次循环完,请问要怎么写。 6 7 #include <stdio.h> 8 #include <string.h> 9 void main() 10 { 11 int i=0,j=0,result=0,index=0,cindex=0; 12 char a[100],b[100],c[4]; 13 gets(a);//输入数据 14 15 for(i=0 ; i<strlen(a); i++) 16 { 17 /*将16进制转换成10进制*/ 18 if(a[i]>='a' && a[i]<='z') 19 result = result*16 + a[i]-'a'+10; //疑问? a< a[i] <z 它是如何比较的? 20 else if(a[i]>='A' && a[i]<='Z') 21 result = result*16 + a[i]-'A'+10; 22 else 23 result = result*16 + a[i]-'0'; 24 /*每两位处理一次*/ 25 if(i%2!=0) 26 { 27 cindex = 0; 28 do 29 { 30 c[cindex++] = result%10 + '0';//倒序存放在c中 31 result/=10; 32 }while(result!=0); 33 for(j=cindex-1; j>=0; j--)//翻转后存放在b中 34 b[index++] = c[j]; 35 } 36 } 37 b[index] = '\0';//加上串结束符 38 puts(b);//输出 39 }
你好,请问2B4AFF8071这个字符串可否直接写死在定义中, 42 是否可以这样char a[10]={'2','B','4','A','F','F','8','0','7','1'};??? 43 追答 44 char a[100]="2B4AFF8071",b[100],c[4]; 45 //gets(a);//输入数据 46 这样就可以了 47 /****************************************************/ 48 49 答疑:: 50 //疑问? a< a[i] <z 它是如何比较的? 51 /* 52 它们是对字母的ASCII码进行比较,累加,把它们都当作一个字符。 53 c语言 搜索ASCII码中,A~Z:65-90, a~z:97-122(分别一一对应)。 54 ASCII(American Standard Code for Information Interchange,美国标准信息交换代码) 55 是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统, 56 并等同于国际标准ISO/IEC 646。ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。 57 标准ASCII 码也叫基础ASCII码,使用7 位二进制数来表示所有的大写和小写字母,数字0 到9、标点符号, 58 以及在美式英语中使用的特殊控制字符。 59 */标签:百题,一练,index,2B4AFF8071,C语言,char,006,100,10 From: https://www.cnblogs.com/xiaosanxian/p/17304759.html