码迷,mamicode.com
首页 > 其他好文 > 详细

十六进制到10进制转换

时间:2016-03-15 00:49:31      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:十六进制到10进制转换

自己感觉要解决的问题点:怎么接收输入的16进制的字符串"解决办法通过判断字符是否‘\n’"

具体看下面代码,不是很好,但是水平有限。

#ifndef _SCALECONVERT_
#define _SCALECONVERT_
/*================================ Macros ===================================*/
#define FALSE 0
#define TURE 1
#define MAX_ARRAY 100  //允许接收的最大16进制的字符串
/*============================= Include Files ===============================*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
/*============================= 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;
}





十六进制到10进制转换

标签:十六进制到10进制转换

原文地址:http://zhaoxiaohu.blog.51cto.com/10778115/1751012

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!