c语言实现字符串转二进制
时间: 2023-06-03 13:08:15 浏览: 316
答案:
可以通过char数组逐个取出字符并将其转换为二进制表示,最终得到该字符串的二进制表示。
示例代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void str_to_bin(char* str) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
char c = str[i];
printf("%c: ", c);
for (int j = 7; j >= 0; j--) {
if (c & (1<<j)) {
printf("1");
} else {
printf("0");
}
}
printf("\n");
}
}
int main() {
char str[100];
scanf("%s", str);
str_to_bin(str);
return 0;
}
```
输入字符串"hello",输出结果:
```
h: 01101000
e: 01100101
l: 01101100
l: 01101100
o: 01101111
```
相关问题
c语言十六进制字符串转二进制字符串
可以使用C语言中的函数来实现十六进制字符串转二进制字符串的转换。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char hex_string[] = "1a2b3c4d";
char binary_string[33] = {0}; // 二进制字符串最长为32位,加上'\0'结尾符号
for (int i = 0; i < strlen(hex_string); i++) {
char hex_char = hex_string[i];
int hex_value;
if (hex_char >= '0' && hex_char <= '9') {
hex_value = hex_char - '0';
} else if (hex_char >= 'a' && hex_char <= 'f') {
hex_value = hex_char - 'a' + 10;
} else if (hex_char >= 'A' && hex_char <= 'F') {
hex_value = hex_char - 'A' + 10;
} else {
printf("Invalid hex string!\n");
exit(1);
}
for (int j = 0; j < 4; j++) {
binary_string[i * 4 + j] = hex_value % 2 + '0';
hex_value /= 2;
}
}
printf("Binary string: %s\n", binary_string);
return 0;
}
```
该代码将十六进制字符串 "1a2b3c4d" 转换为二进制字符串 "00011010100010110011110001001101"。具体实现思路是先遍历十六进制字符串的每个字符,然后将每个字符转换为对应的十进制数值。接着,将每个十进制数值转换为四位二进制字符串,并将其拼接成最终的二进制字符串。注意,需要先将二进制字符串的每个字符初始化为'\0',否则最后的结果可能会出现意外的情况。
C语言十六进制字符串转二进制字符串
可以使用C语言中的函数来实现十六进制字符串转二进制字符串的转换。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char hex_string[] = "1a2b3c4d";
char binary_string[33] = {0}; // 二进制字符串最长为32位,加上'\0'结尾符号
for (int i = 0; i < strlen(hex_string); i++) {
char hex_char = hex_string[i];
int hex_value;
if (hex_char >= '0' && hex_char <= '9') {
hex_value = hex_char - '0';
} else if (hex_char >= 'a' && hex_char <= 'f') {
hex_value = hex_char - 'a' + 10;
} else if (hex_char >= 'A' && hex_char <= 'F') {
hex_value = hex_char - 'A' + 10;
} else {
printf("Invalid hex string!\n");
exit(1);
}
for (int j = 0; j < 4; j++) {
binary_string[i * 4 + j] = hex_value % 2 + '0';
hex_value /= 2;
}
}
printf("Binary string: %s\n", binary_string);
return 0;
}
```
该代码将十六进制字符串 "1a2b3c4d" 转换为二进制字符串 "00011010100010110011110001001101"。具体实现思路是先遍历十六进制字符串的每个字符,然后将每个字符转换为对应的十进制数值。接着,将每个十进制数值转换为四位二进制字符串,并将其拼接成最终的二进制字符串。注意,需要先将二进制字符串的每个字符初始化为'\0',否则最后的结果可能会出现意外的情况。