自己感觉要解决的问题点:怎么接收输入的16进制的字符串"解决办法通过判断字符是否‘\n’"。
具体看下面代码,不是很好,但是水平有限。
#ifndef _SCALECONVERT_#define _SCALECONVERT_/*================================ Macros ===================================*/#define FALSE 0#define TURE 1#define MAX_ARRAY 100 //允许接收的最大16进制的字符串/*============================= Include Files ===============================*/#include#include #include #include /*============================= Include Function ===============================*/int scaleConvert(char *scaleArray16,int sizeArray);#endif //_SCALECONVERT_
#include"scaleConvert.h"/***********************************************************//************函数名:inputAndDetection**********************//************入口参数:16进制字符串*************************//************返回值:int类型********************************//************函数功能:输入十六进制数***********************//***********************************************************/static int inputData(char *scaleArray16){ int index = 0; char ch = 0; if(NULL == scaleArray16) { return FALSE; } printf("请输入要转换的16进制数:"); while((ch = getchar()) != '\n') { scaleArray16[index] = ch; index++; } scaleArray16[index] = '\0'; return TURE;}/***********************************************************//************函数名:scaleConvert***************************//************入口参数:16进制字符串*************************//************返回值:10进制数*******************************//************函数功能:将一个16进制字符转换成十进制*********//***********************************************************/static int byteScaleConvert(char oneChar) { int returnValue = 0; if((oneChar >= '0')&&(oneChar <= '9')) { returnValue = oneChar - '0'; } else if((oneChar >= 'a')&&(oneChar <= 'f')) { returnValue = oneChar - 87; } else if((oneChar >= 'A')&&(oneChar <= 'F')) { returnValue = oneChar - 55; } return returnValue;}/***********************************************************//************函数名:scaleConvert***************************//************入口参数:16进制字符串*************************//************返回值:10进制数*******************************//************函数功能:16进制转10进制***********************//***********************************************************/int scaleConvert(char *scaleArray16,int sizeArray){ int scaleNumber10 = 0; int temp = sizeArray; if(NULL == scaleArray16) { return FALSE; } while(sizeArray>1) { scaleNumber10 += byteScaleConvert(scaleArray16[sizeArray])*pow(16,(temp-sizeArray)); sizeArray--; } return scaleNumber10;//返回的十进制数}/***********************************************************//************函数名:main***********************************//************入口参数:无***********************************//************返回值:0**************************************//************函数功能:程序的如口***************************//**********************************************************/int main(){ int index = 0; int sizeArray16 = 0; int scaleNumber10 = 0; char scaleArray16[MAX_ARRAY] = {0}; inputData(scaleArray16);//输入16进制数 sizeArray16 = strlen(scaleArray16)-1;//16进制字符串的长度-1 scaleNumber10 = scaleConvert(scaleArray16,sizeArray16);//转换 printf("%d",scaleNumber10); printf("\n"); system("pause"); return 0;}