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

31moq8wy  于 2022-12-02  发布在  其他
关注(0)|答案(1)|浏览(211)

我必须把一个字母转换成二进制数字。所有的工作,但有一个问题-我不明白为什么在我的二进制数字后,它仍然打印一些其他的数字...谁能帮帮忙,好吗?
这是我的代码,先谢谢你了!

#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;
}
tp5buhyn

tp5buhyn1#

有3个问题会使您的示例代码无法编译:
1.您试图将函数的第一个参数声明为const char char,但char是一个类型,不是有效的变量名。
1.您尝试在main中调用encode_char,但您定义了convert

  1. 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;
}

相关问题