十六——十
作者:互联网
十六转十
#include <stdio.h> #include <string.h> /* 十六进制数转换为十进制数 */ long hexToDec(char *source); /* 返回ch字符在sign数组中的序号 */ int getIndexOfSigns(char ch); int main() { char *hex = "75BCD15"; printf("16进制数:\t%s\n", hex); printf("10进制数:\t%ld\n", hexToDec(hex)); return 0; } /* 十六进制数转换为十进制数 */ long hexToDec(char *source) { long sum = 0; long t = 1; int i, len; len = strlen(source); for(i=len-1; i>=0; i--) { sum += t * getIndexOfSigns(*(source + i)); t *= 16; } return sum; } /* 返回ch字符在sign数组中的序号 */ int getIndexOfSigns(char ch) { if(ch >= '0' && ch <= '9') { return ch - '0'; } if(ch >= 'A' && ch <='F') { return ch - 'A' + 10; } if(ch >= 'a' && ch <= 'f') { return ch - 'a' + 10; } return -1; }
#include<stdio.h> int main() { char a[40]="0123456789ABCDEF";//用一个数组存储十六进制数 char b[100];//储存输入的十进制数对应的十六进制数 int n; int cnt;//计数 scanf("%d",&n);//输入要转换的十进制数 if(n==0) printf("0"); while(n!=0) { b[++cnt]=a[n%16];//这里cnt从1开始 n=n/16; } for(int i=cnt;i>0;i--)/*上面cnt从1开始所以i>0,不用输出b[0]。逆序输出*/ printf("%c",b[i]); return 0; }
标签:十六进制,cnt,ch,int,十六,char,printf 来源: https://www.cnblogs.com/shy123/p/16337876.html