要求:编写一个函数,输入一个16进制数,输出相应的10进制数
注意:输入的是一个字符串如: “0x123", "-0X123a", " +0XABC",要将输入的情况考虑全面.
输出要求是一个数如:54,6456
c语言实现如下:
#include <stdio.h>
#include<limits.h>
#include<ctype.h>
int Get_0x(const char* str)
{
int index = 1; //符号位
int sum = 0;
while ((*str != '\0')) //去掉空格字符
{
while ( isspace(*str))
{
str++;
}
if (*str == '-' || *str == '+') //判断符号
{
if (*str == '-')
{
index = -index;
}
else
{
index = 1;
}
str++;
}
if ((*str == '0') && (*(str + 1) == 'x' || *(str + 1) == 'X'))//判断是否为16进制格式
{
str += 2;
}
else
{
return INT_MAX;
}
while (isxdigit(*str)) //判断是否是16进制数
{
if (isdigit(*str))
{
sum =