c语言八进制转换10进制
时间: 2024-10-17 20:06:18 浏览: 21
在C语言中,将八进制数转换为十进制数通常通过取模运算和整数除法结合实现。八进制每一位对应的是三个二进制位(因为8=2^3),你可以按位相加然后累乘以8的幂次。这里是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
// 函数用于将八进制字符串转换成十进制整数
int octal_to_decimal(char *octal_num) {
int decimal = 0;
int power = 0;
for (int i = strlen(octal_num) - 1; i >= 0; i--) {
if (octal_num[i] >= '0' && octal_num[i] <= '7') { // 检查字符是否为有效八进制数字
decimal += (octal_num[i] - '0') * pow(8, power); // 加上对应的数值并更新指数
power++;
} else {
printf("Invalid input: Non-octal digit found.\n");
return -1; // 非八进制字符,返回错误码
}
}
return decimal;
}
int main() {
char octal_str[] = "123"; // 示例八进制数
int decimal_num = octal_to_decimal(octal_str);
if (decimal_num != -1) {
printf("The decimal equivalent is: %d\n", decimal_num);
}
return 0;
}
```
在这个例子中,`octal_to_decimal`函数从八进制字符串的最后一位开始处理,每次循环都将当前位的值乘以8的相应次方,然后累加到结果上。
阅读全文