char C2D(uint8_t c )
{
if (c >= '0' && c <= '9')
return c - '0';
if (c >= 'a' && c <= 'f')
return 10 + c -'a';
if (c >= 'A' && c <= 'F')
return 10 + c -'A';
return (char)c;
}
uint16_t ATOI(char* str,uint16_t base )
{
unsigned int num = 0;
while (*str !=0)
num = num * base + C2D(*str++);
return num;
}
uint32_t ATOI32(char* str,uint16_t base )
{
uint32_t num = 0;
while (*str !=0)
num = num * base + C2D(*str++);
return num;
}
uint64_t ATOI64(char* str,uint16_t base )
{
uint64_t num = 0;
uint8_t cnt =0;
if(strlen(str)>16)return 0;
while (*str !=0)
num = num * base + C2D(*str++);
return num;
}
其实没有必要!!只需要一个 自己拿去转化就好了!!!!只要
uint64_t ATOI(char* str,uint16_t base )
{
uint64_t num = 0;
if(strlen(str)>16)return 0;
while (*str !=0)
num = num * base + C2D(*str++);
return num;
}
另外一个sscanf的话发现比较适合单个的分离!!!
sprintf 是把东西往里面放
sscanf是从里面取东西