C语言 将十进制(字母)转换为二进制



我必须把一个字母转换成二进制数。所有的工作,但有一个问题-我不明白为什么我的二进制数后,它仍然打印一些其他数字…有人能帮忙吗?

这是我的代码。提前感谢!
#include <stdio.h>
#include <stdbool.h>
void convert(const char char, bool bits[8]) {
char c = char;
for (int j = 7; j+1 > 0; j--){
if(c>=(1<<j)){
c=c-(1<<j);
printf("1");
}else{
printf("0");
}
}
//here start to prints other numbers
printf("n");
printf("n");
}

int main(){
bool bits1[8];
encode_char('A', bits1);
for(int i = 0; i < 8; i++)
{
printf("%d", bits1[i]);
}
printf("n");
return0;
}

有3个问题使您的示例代码无法编译:

  1. 您试图将函数的第一个参数声明为const char char,但char是一种类型,不是有效的变量名。
  2. 您试图在main中调用encode_char,但您定义了convert
  3. return0应该是return 0

修复这些之后,仍然会有垃圾值的问题。因为即使您传递了bits,该函数也不会对它做任何事情(因此它仍然是垃圾值)。所以你的printf("%d", bits1[i]);就是一堆随机的数字。额外的数字不是你用//here...标记的。

下面是给bits赋值的例子:

#include <stdio.h>
#include <stdbool.h>
void encode_char(const char input_char, bool bits[8]) {
char c = input_char;
for (int j = 7; j >= 0; j--){
if(c>=(1<<j)){
c=c-(1<<j);
bits[7-j] = 1;
}else{
bits[7-j] = 0;
}
} 
}

int main(){
bool bits1[8];
encode_char('A', bits1);
for(int i = 0; i < 8; i++)
{
printf("%d", bits1[i]);
}
printf("n");
return 0;
}

最新更新