用c语言将八进制转换成十进制
时间: 2023-05-21 18:02:28 浏览: 319
可以使用C语言中的 strtol 函数将八进制转换成十进制。具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char octal[] = "12345"; // 八进制数
char *endptr; // strtol 函数的第三个参数
long decimal = strtol(octal, &endptr, 8); // 8 表示八进制
printf("%s in octal is %ld in decimal.\n", octal, decimal);
return 0;
}
```
输出结果为:
```
12345 in octal is 5349 in decimal.
```
相关问题
c语言用八进制转换为十进制
可以使用C语言中的atoi函数将八进制数转换为十进制数。例如,如果要将八进制数"0123"转换为十进制数,可以使用以下代码:
int octal = 0123;
int decimal = atoi("0123");
其中,octal变量存储了八进制数0123的值,而decimal变量存储了将八进制数0123转换为十进制数后的值。
c语言堆栈八进制转换成十六进制
以下是将八进制数转换成十六进制数的C语言代码:
```c
#include <stdio.h>
int main()
{
unsigned long int octal, decimal = 0;
int i = 0, rem;
char hex[20];
printf("Enter an octal number: ");
scanf("%lo", &octal);
// Convert octal to decimal
while (octal != 0)
{
rem = octal % 10;
decimal += rem * pow(8, i);
i++;
octal /= 10;
}
i = 0;
// Convert decimal to hexadecimal
while (decimal != 0)
{
rem = decimal % 16;
if (rem < 10)
{
hex[i] = rem + 48;
}
else
{
hex[i] = rem + 55;
}
i++;
decimal /= 16;
}
// Display the hexadecimal number
printf("Hexadecimal number: ");
for (int j = i - 1; j >= 0; j--)
{
printf("%c", hex[j]);
}
return 0;
}
```
在此代码中,我们首先将八进制数转换为十进制数,然后再将十进制数转换为十六进制数。我们使用两个while循环来完成这两个转换。
在第一个循环中,我们将每个八进制位的数字乘以8的幂,并将它们相加以得到十进制数。在第二个循环中,我们将十进制数除以16并获取余数,余数可以是0到15之间的数字。如果余数小于10,则将其转换为字符并将其存储在数组hex中,否则将其转换为A到F之间的字符并将其存储在数组hex中。
最后,我们反向遍历数组hex并打印十六进制数。
阅读全文