在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; } ``` 总结 字符转二进制: 适用于单个字符处理,推荐使用位运算逐位提取。 整型转二进制 十六进制转二进制:需结合 `strtol` 函数转换后再格式化输出。