c语言字符串转成二进制,例如5C转为0x5C
时间: 2023-06-22 09:39:21 浏览: 59
将字符串转换为二进制数,需要先将字符串中的字符逐一转换为其对应的二进制数,然后将这些二进制数拼接起来得到最终的二进制数。下面是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "5C";
int len = strlen(str);
int i, j, bin = 0;
for (i = 0; i < len; i++) {
char c = str[i];
int n = 0;
if (c >= '0' && c <= '9') {
n = c - '0';
} else if (c >= 'A' && c <= 'F') {
n = c - 'A' + 10;
}
for (j = 3; j >= 0; j--) {
bin |= ((n >> j) & 1) << (4 * (len - i - 1) + j);
}
}
printf("0x%X\n", bin);
return 0;
}
```
这个程序将字符串`"5C"`转换为二进制数`0x5C`。在循环中,首先判断字符是否为数字或大写字母,然后将其转换为对应的二进制数。接着,将每个二进制数的四位依次拼接起来,得到最终的二进制数。其中`|=`表示按位或赋值操作,`(n >> j) & 1`表示将二进制数`n`向右移位`j`位后取出最低位,并将其与`1`进行按位与操作,从而得到该位的二进制数。最后,使用`printf`函数将二进制数以十六进制形式输出。