二进制转换成八进制c语言代码
时间: 2024-09-29 16:00:25 浏览: 49
jinzhizhuanhuan.rar_十六进制_进制转换_进制转换代码
在C语言中,将二进制数转换为八进制数可以先将其视为字符串处理,通过循环逐位取余数的方式转换为十进制,然后再转换为八进制。下面是一个简单的函数示例:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 函数:将二进制字符串转换为八进制字符串
char* binary_to_octal(char* binary_str) {
int len = strlen(binary_str);
int octal_num = 0;
char octal_str[9]; // 预留一位给前导零
for (int i = len - 1; i >= 0; i--) {
if (binary_str[i] == '1') {
octal_num += pow(2, len - 1 - i);
}
}
// 将十进制转为八进制
char* ptr = octal_str + 1;
while (octal_num > 0) {
*ptr++ = octal_num % 8 + '0'; // 转换为字符并加前导零
octal_num /= 8;
}
*ptr = '\0';
// 反转字符串以便得到正确的八进制顺序
倒序(octal_str);
return octal_str;
}
// 辅助函数:反转字符串
void倒序(char* str) {
int start = 0;
int end = strlen(str) - 1;
while (start < end) {
char temp = str[start];
str[start] = str[end];
str[end] = temp;
start++;
end--;
}
}
int main() {
char binary_str[] = "10101010"; // 示例二进制数
char* octal_str = binary_to_octal(binary_str);
printf("Binary %s is equal to Octal %s\n", binary_str, octal_str);
free(octal_str); // 释放内存
return 0;
}
```
阅读全文