整数转化成字符串; 字符串转换为整数

来源:互联网 发布:知乎 感情 精华贴 编辑:程序博客网 时间:2024/05/17 10:09
整数转化成字符串; 字符串转换为整数
/*整数转化成字符串*/char *IntToStr(int num, char str[]){int i = 0, j = 0;char temp[100];while(num){temp[i] = num % 10 + '0';   //取模运算得到从后往前的每一个数字变成字符num = num / 10;i++;}temp[i] = 0;    //字符串结束标志i = i - 1;     //回到temp最后一个有意义的数字while(i >= 0){str[j] = temp[i];i--;j++;}str[j] = 0;   //字符串结束标志return str;}/*字符串转换为整数,仅考虑十进制,不考虑非法字符*/int StrToInt(char *str){int value = 0;int sign = 1;assert(str != NULL);if(*str == '-'){sign = -1;str++;}else if(*str == '+'){str++;}while(*str){value = value * 10 +(*str - '0');str++;}return sign * value;}/*字符串转换整数,考虑16进制,10进制,8进制,不考虑其他非法字符*/int StrToIntAll(char *str){int value = 0;int sign = 1;int radix;assert(str != NULL);if(*str == '-'){sign = -1;str++;}else if(*str == '+'){str++;}//考虑不同的进制if(*str == '0' && (*(str+1) == 'X' || *(str+1) == 'x')){radix = 16;str += 2;}else if(*str == '0'){radix = 8;str++;}else{radix = 10;}while(*str){if(radix == 16){if(*str >= '0' && *str <= '9'){value = value * radix + (*str - '0');}else{value = value * radix +(*str - 'a' + 10);}}else{value = value * radix + (*str - '0');}str++;}return sign * value;}


0 0