C语言将8进制转为10进制
时间: 2024-10-10 15:16:02 浏览: 31
顺序栈、链栈将10进制转为2、8、16进制源码
5星 · 资源好评率100%
C语言中,将8进制数转换为10进制通常涉及到两个步骤:输入8进制数和将其解析成对应的10进制值。你可以通过以下方式实现:
1. 首先,从用户那里获取一个8进制字符串作为输入。例如,`char octalNum[] = "123";`
2. 然后,遍历这个字符串,每一位代表一位8进制数。对于每一个字符,可以利用它的ASCII码值减去'0'(因为字符'0'到'9'的ASCII值依次递增,等于它们各自的数值加上48),然后乘以8的相应次方(从0开始,每增加一位左移一位)。例如,字符'1'对应的ASCII值是49,减去48得到1,然后乘以8^0(即1)。
3. 将每个位的结果累加起来,就得到了最终的10进制数。
这里是一个简单的示例函数,它接收一个字符串并计算其8进制值:
```c
#include <stdio.h>
#include <string.h>
int octalToDecimal(char* octalNum) {
int decimal = 0;
int power = 0;
for (int i = strlen(octalNum) - 1; i >= 0; i--) {
if (octalNum[i] >= '0' && octalNum[i] <= '7') {
decimal += (octalNum[i] - '0') * pow(8, power);
power++;
} else {
printf("Invalid input: Non-octal digit found.\n");
return -1; // 或者抛出错误
}
}
return decimal;
}
int main() {
char octalStr[] = "123";
int decimalVal = octalToDecimal(octalStr);
if (decimalVal != -1)
printf("Decimal value of %s is: %d\n", octalStr, decimalVal);
return 0;
}
```
阅读全文