八进制数字字符串转换为十进制

表示八进制数的字符串,转换成无符号整型的一种方法:

比如 12345
那么就
1*10+2 = 12
12*10+3 = 123
123*10 + 4 = 1234

如果要转成八进制,那么就乘8,累加出来的十进制数转换成八进制就是对应的了

如果是0234
那要跳过这个0,不然会出现 0*10+1=1
然后1*10+2 = 12 这不符合上数

unsigned int str_octal_to_uint(const char *str)
{
    unsigned int result = 0;
    int seen_non_zero_digit = 0;

    while (*str) {
        int digit = *str;
        if (!isdigit(digit) || digit > '7')  //是否是阿拉伯数字
            break;

        if (digit != '0')
            seen_non_zero_digit = 1;

        if (seen_non_zero_digit) {
            result <<= 3;
            result += (digit - '0');
        }
        str++;
    }
    return result;
}

 

posted @ 2017-07-05 11:13  ren_zhg1992  阅读(1314)  评论(0)    收藏  举报