如何在代码C中将字符串转换为二进制

时间:2019-07-10 14:49:29

标签: c

我正在尝试将int转换为字符串形式的二进制,但我不能。 请帮我。如何将整数转换为二进制,请告诉我。

Input: 32
Output: 00100000

我的代码:

#include <stdio.h>
#include <string.h>
char converttobinary(int n)
{
    int i;
    int a[8];
    char op;
    for (i = 0; i < 8; i++)
    {
        a[i] = n % 2;
        n = (n - a[i]) / 2;
    }
    for (i = 7; i >= 0; i--)
    {
        op = strcat(op, a[i]);
    }
    return op;
}
int main()
{
    int n;
    char str;
    n = 254;
    str = converttobinary(n);
    printf("%c", str);
    return 0;

}

3 个答案:

答案 0 :(得分:1)

我试图用最少的修改来修改您的解决方案,以使其起作用。有一些优雅的解决方案,例如使用移位运算符将Integer转换为Binary。

代码中的主要问题之一是您使用字符而不是字符数组。 即char str;而非char str[SIZE]; 另外,您正在对单个字符执行字符串操作。另外,iostream头文件适用于C ++。

下面发布的解决方案中还有很多改进的余地(我仅使您的代码工作时改动很小)。

我的建议是使您的C基础更强,并再次解决该问题。

#include <stdio.h>
#include <string.h>

void converttobinary(int n, char *op)
{
    int i;
    int a[8];
    for (i = 0; i < 8; i++)
    {
        a[i] = n % 2;
        n = (n - a[i]) / 2;
    }
    for (i = 7; i >= 0; i--)
    {
        op[i]=a[i];
    }

}
int main()
{
    int n,i;
    char str[8];
    n = 8;
    converttobinary(n,str);
    for (i = 7; i >= 0; i--)
    {
        printf(" %d ",str[i]);
    }
    return 0;

}

答案 1 :(得分:0)

char *rev(char *str)
{
    char *end = str + strlen(str) - 1;
    char *saved = str;
    while(end > str)
    {
        int tmp = *str;
        *str++ = *end;
        *end-- = tmp;
    }
    return saved;
}

char *tobin(char *buff, unsigned long long data)
{
    char *saved = buff;

    while(data)
    {
        *buff++ = (data & 1) + '0';
        data >>= 1;
    }
    *buff = 0;
    return rev(saved);
}

int main()
{

    char x[128];
    unsigned long long z = 0x103;
    printf("%llu is 0b%s\n", z, tobin(x, z));

    return 0;
}

答案 2 :(得分:0)

我稍微修改了您的代码以实现所需的功能, 这段代码的结果

n = 10

00001010

在这段代码中,我将输入的n位移位,比较该位置是否为1或0,如果存在1或0,则写为“ 1”,如果为0,则写为“ 0”。 >

#include <stdio.h>
void converttobinary(int n, char op[8]){
    int auxiliar = n;
    int i;

    for (i = 0; i < 8; i++) {
        auxiliar = auxiliar >> i;
        if (auxiliar & 1 == 1){
            op[7-i] = '1';
        } else{
            op[7-i] = '0';
        }
        auxiliar = n;
    }

}

int main (void){
    int n = 10;
    int i;
    char op[8];

    converttobinary(n, op);

    for(i = 7; i > -1; i--){
        printf("%c",op[i]);
    }

    return 0;

}