首页  > 教育解读  > c语言如何将字符串转成二进制

c语言如何将字符串转成二进制

2025-05-10 10:09:29
墨香传道
墨香传道已认证

墨香传道为您分享以下优质知识

在C语言中,将字符串转换为二进制表示的方法主要有以下两种:

一、字符转二进制字符串(逐字符转换)

核心思路

将每个字符的ASCII码转换为8位二进制数,通常以空格或特定分隔符分隔。

实现方法

- 使用循环遍历字符串中的每个字符,通过位运算(如 `t & 1`)提取二进制位,并存储到缓冲区。

- 示例代码(字符转8位二进制):

```c

include

include

void char2bits(char ch) {

char buf = {0};

int n = 7;

while (t >

0) {

buf[n] = '0' + (t & 1);

t >

>

= 1;

n--;

}

buf = '0';

printf("%sn", buf);

}

int main() {

char s[] = "example";

while (*s) {

char2bits(*s++);

}

return 0;

}

```

二、整型转二进制字符串(按位处理)

核心思路

将整数转换为二进制字符串,适用于需要固定长度二进制表示的场景(如32位、64位)。

实现方法

- 使用 `sprintf` 或 `itoa` 函数直接转换,或手动按位操作填充缓冲区。

- 示例代码(32位整数转二进制):

```c

include

include

include

void int_to_binary(int n, char *buf, int bits) {

int i = bits - 1;

while (n >

0) {

buf[i] = (n & 1) + '0';

n >

>

= 1;

i--;

}

buf[bits] = '0';

}

int main() {

int num = 1024;

char binary;

sprintf(binary, "%032s", binary); // 32位补零

printf("i=%d, bs=%sn", num, binary);

return 0;

}

```

三、十六进制转二进制(扩展场景)

若需将十六进制字符串转换为二进制,可结合 `strtol` 函数实现:

```c

include

include

include

int main() {

char hex_str[] = "0x1A";

char binary_str;

long int num = strtol(hex_str, NULL, 16);

sprintf(binary_str, "%064b", num); // 64位二进制

printf("Hex: %s, Binary: %sn", hex_str, binary_str);

return 0;

}

```

总结

字符转二进制:

适用于单个字符处理,推荐使用位运算逐位提取。

整型转二进制:适用于固定长度二进制表示,推荐使用 `sprintf` 或手动位操作。

十六进制转二进制:需结合 `strtol` 函数转换后再格式化输出。