自己感觉要解决的问题点:怎么接收输入的16进制的字符串"解决办法通过判断字符是否‘\n’"。
具体看下面代码,不是很好,但是水平有限。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#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_
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
#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;
}
|
本文转自 8yi少女的夢 51CTO博客,原文链接:http://blog.51cto.com/zhaoxiaohu/1751012,如需转载请自行联系原作者