八进制数字字符串转换为十进制
表示八进制数的字符串,转换成无符号整型的一种方法:
比如 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; }

浙公网安备 33010602011771号