用C语言实现,从算法设计上,设计一个函数,给定任意长度的二进制字符串,可以将其转为对应的十进制字符串
时间: 2024-05-11 19:18:32 浏览: 104
给任意长度的字符串,加CRC校验码的c语言算法.rar
可以使用位运算来实现将二进制转换为十进制的字符串。
具体实现思路如下:
1. 从二进制字符串的最高位开始,逐位向下遍历。
2. 对于每一位,如果是 1,则将对应的 2 的幂次方加入到结果中;如果是 0,则跳过。
3. 最后得到的结果即为十进制字符串。
具体的实现代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
// 将二进制字符串转换为十进制字符串
char* binToDec(char* binStr)
{
int len = strlen(binStr);
int dec = 0;
// 逐位计算十进制值
for (int i = 0; i < len; i++) {
if (binStr[i] == '1') {
dec += pow(2, len - i - 1);
}
}
// 将十进制值转换为字符串
char* decStr = (char*) malloc(sizeof(char) * 20);
sprintf(decStr, "%d", dec);
return decStr;
}
int main()
{
char* binStr = "11011011";
char* decStr = binToDec(binStr);
printf("Binary string: %s\n", binStr);
printf("Decimal string: %s\n", decStr);
free(decStr);
return 0;
}
```
运行结果如下:
```
Binary string: 11011011
Decimal string: 219
```
阅读全文