Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用字符串将dec数字转换为二进制代码_C_Arrays_String_Binary - Fatal编程技术网

使用字符串将dec数字转换为二进制代码

使用字符串将dec数字转换为二进制代码,c,arrays,string,binary,C,Arrays,String,Binary,我在一个项目上工作。您可以输入一个普通数字,程序应首先将其转换为二进制代码,然后将其复制为字符串。若我启动程序并输入一个数字,什么都不会发生 #include <stdio.h> #include <stdlib.h> int main() { int i; unsigned short input; char output [18] = ""; printf("enter a positive number\n"); scan

我在一个项目上工作。您可以输入一个普通数字,程序应首先将其转换为二进制代码,然后将其复制为字符串。若我启动程序并输入一个数字,什么都不会发生

 #include <stdio.h>
#include <stdlib.h>

int main()
{   int i;
    unsigned short input;
    char output [18] = "";

    printf("enter a positive number\n");

    scanf("%hu", &input);

    for (i= 16; 1; i-- )
       {
          output [i] =  input % 2;

        input = input / 2;

       }

     puts(output);


    return 0;
}
#包括
#包括
int main()
{int i;
无符号短输入;
字符输出[18]=“”;
printf(“输入正数\n”);
scanf(“%hu”,&input);
对于(i=16;1;i--)
{
输出[i]=输入%2;
输入=输入/2;
}
投入(产出);
返回0;
}

输出应以NUL结尾,因此
短整数需要16字节,空字符需要1字节

char output [17];
0
的ASCII值添加到结果中以获得
0
1

for(i = 16; i >= 0; i--)
{
    output[i] = '0' + input % 2;
    input = input / 2;
}
最后添加空字符:

output[16] = 0;
或者,您可以使用shift运算符

unsigned int bitmask = 1 << (15 - i);
output[i] = '0' + ((input & bitmask) ? 1 : 0);

无符号整数位掩码=1这是因为
'1'!=1
for(i=16;1;i--)
将永远循环。您是否尝试过调试它?'1'!=1你是说一个字符!=int?但为什么它要永远循环?