我必须把一个字母转换成二进制数。所有的工作,但有一个问题-我不明白为什么我的二进制数后,它仍然打印一些其他数字…有人能帮忙吗?
这是我的代码。提前感谢!#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个问题使您的示例代码无法编译:
- 您试图将函数的第一个参数声明为
const char char
,但char
是一种类型,不是有效的变量名。 - 您试图在main中调用
encode_char
,但您定义了convert
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;
}