#include "string.h"
#define INVALID_VALUE_LXX ((1 << (8 * sizeof(int) -1)) - 1)
/*有符号整型最大值,如果越界将为0*/
/* 2^x == 1 << x, and - is prioty of << */
bool is0to9(char ch)
{
if ('0' <= ch && ch <= '9')
{
return true;
}
else
{
return false;
}
}
int a2iLxx(char* ch)
{
int index = 0;
int retVal = 0;
bool flag = false;
if (NULL == ch)
{
return INVALID_VALUE_LXX;
}
if ('-' == ch[0])
{
/*负数*/
flag = true;
index = 1;
}
for (; ch[index] != '\0'; index++)
{
if (!is0to9(ch[index]))
{
return INVALID_VALUE_LXX;
}
retVal = retVal * 10 + ch[index] - '0';
}
if (flag)
{
return -retVal;
}
else
{
return retVal;
}
}
void main()
{
char ch1[] = "123";
char ch2[] = "-234";
char ch3[] = "0";
char ch4[] = "0x123";
int a = INVALID_VALUE_LXX;
/*调试查看值*/
a = a2iLxx(ch1);
a = a2iLxx(ch2);
a = a2iLxx(ch3);
a = a2iLxx(ch4);
}
字符转整型,比系统的好用!a2iLxx
最新推荐文章于 2022-09-01 11:04:04 发布