c 字符串转2进制字符串
时间: 2023-09-13 10:05:50 浏览: 51
以下是将一个 C 字符串转换为二进制字符串的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *string_to_binary(char *s) {
if (s == NULL) return NULL; // 如果输入字符串为空,返回空指针
size_t len = strlen(s); // 获取输入字符串的长度
char *binary = (char *) malloc(len * 8 + 1); // 分配足够的内存来存储二进制字符串(每个字符占8位,最后要加上一个结束符 '\0')
if (binary == NULL) return NULL; // 如果内存分配失败,返回空指针
for (int i = 0; i < len; i++) {
unsigned char c = s[i];
for (int j = 7; j >= 0; j--) {
binary[i * 8 + (7 - j)] = ((c & (1 << j)) ? '1' : '0'); // 将每个字符转换成二进制字符串
}
}
binary[len * 8] = '\0'; // 添加结束符
return binary;
}
int main() {
char s[] = "Hello, world!";
char *binary = string_to_binary(s);
printf("%s\n", binary);
free(binary);
return 0;
}
```
在上述代码中,我们首先定义了一个名为 `string_to_binary` 的函数来执行字符串到二进制字符串的转换。该函数的输入为一个 C 字符串 `s`,并返回一个新的二进制字符串。在函数内部,我们首先检查输入字符串是否为空,如果是,则返回空指针。接着,我们使用 `strlen` 函数获取输入字符串的长度,并根据需要为二进制字符串分配足够的内存(每个字符占 8 位)。如果内存分配失败,则返回空指针。然后,我们遍历输入字符串中的每个字符,并将其转换为二进制字符串。在内部循环中,我们首先将字符转换为无符号 char 类型,并使用位运算来提取每个位的值。最后,我们将每个位的值存储在新的二进制字符串中。在最后一步中,我们添加了一个结束符 '\0',以确保生成的二进制字符串是一个有效的 C 字符串。最后,我们在主函数中测试 `string_to_binary` 函数,并使用 `printf` 函数打印转换后的二进制字符串。最后,我们使用 `free` 函数释放为二进制字符串分配的内存。