c语言输入二进制字符串
时间: 2023-06-22 18:48:51 浏览: 66
你可以使用scanf()函数来输入一个二进制字符串,然后使用sscanf()函数将其转换为一个整数。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char bin_str[32];
int num;
printf("Enter a binary string: ");
scanf("%s", bin_str);
// Convert binary string to integer
if(sscanf(bin_str, "%d", &num) != 1) {
printf("Invalid binary string!\n");
exit(1);
}
printf("The binary string %s is equivalent to decimal integer %d.\n", bin_str, num);
return 0;
}
```
在这个示例中,我们首先使用scanf()函数输入一个二进制字符串,并将其存储在一个名为bin_str的字符数组中。然后,我们使用sscanf()函数将bin_str转换为一个整数,并将其存储在名为num的整数变量中。最后,我们输出转换后的整数。请注意,我们使用了% d格式说明符来读取整数,这是因为二进制字符串被转换为整数后,它们的类型是int。
相关问题
C语言实现二进制字符串转为16进制字符串
可以通过将二进制字符串每四位分组,然后转换为对应的16进制数值,最终得到16进制字符串。以下是一个C语言实现的例子:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char binary[100];
printf("Enter a binary string: ");
scanf("%s", binary);
int len = strlen(binary);
int extra = len % 4;
if (extra > 0) {
// 如果二进制字符串长度不是4的倍数,则在前面添加0使其成为4的倍数
for (int i = 0; i < 4 - extra; i++) {
memmove(binary + 1, binary, len + 1);
binary[0] = '0';
len++;
}
}
int n = len / 4;
char hex[n + 1];
for (int i = 0; i < n; i++) {
int value = 0;
// 将四位二进制字符串转换为对应的数值
for (int j = 0; j < 4; j++) {
value = (value << 1) + (binary[i * 4 + j] - '0');
}
// 将数值转换为16进制字符
if (value < 10) {
hex[i] = '0' + value;
} else {
hex[i] = 'A' + value - 10;
}
}
hex[n] = '\0';
printf("The hex string is: %s\n", hex);
return 0;
}
```
示例运行结果:
```
Enter a binary string: 10110011010
The hex string is: 5B2
```
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',否则最后的结果可能会出现意外的情况。