繁体   English   中英

如何在C中将二进制转换为十进制

[英]How to convert binary to decimal in C

我想将一系列整数转换为十进制。 我知道这个过程,但我怎样才能把所有整数都作为一个二进制数呢?

输出必须是这样的:

Enter first binary digit: 0
Enter second binary digit: 0
Enter third binary digit: 0
Enter fourth binary digit: 0
0000 = 0

以下是我编写此任务的方式:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<conio.h>

int main(void)
    {
        int a[100];
        int n, dec = 0; int power(int, int);

        long int binaryNumber, decimalNumber = 0, j = 1, remainder;  

        printf("Enter first binary number: ");
        scanf("%ld", &a[1]);
        printf("Enter second binary number: ");
        scanf("%ld", &a[2]);
        printf("Enter third binary number: ");
        scanf("%ld", &a[3]);
        printf("Enter fourth binary number: ");
        scanf("%ld", &a[4]);

        for (int i = 0;i<n;i++)
        {
            scanf("%d", &a[i]);
        }

        for (int i = (n - 1);i >= 0;i--)
        {
            dec = (a[i] * power(2, j)) + dec;
            j++;
        }
        printf("binary number of decimal is %d", dec);

        return 0;
    }

嗯,这是简单的数学。 第一个二进制数是 2^0,第二个是 2^1,第三个是 2^2,...

number = first * 1 + second * 2 + third * 4 + forth * 8;
#include <stdio.h>
#include <string.h>
#include <math.h>

int baseN_to_decimal(char *number, int from_base){
    int result = 0;
    int digit;
    int len = strlen(number);
    for(int i=len-1;i>=0;i--){
        // printf("%c", number[i]);
        if(number[i]>='0' && number[i]<='9'){
            digit = number[i] - '0';
        }
        if(number[i]>='A' && number[i]<='F'){
            digit = number[i] - 'A' + 10;
        }
        if(number[i]>='a' && number[i]<='f'){
            digit = number[i] - 'a' + 10;
        }
        result = result + digit * (pow(from_base,len-i-1));
    }
    return result;
}

int main()
{
    printf("%d\r\n", baseN_to_decimal("101010",2)); // Binary to decimal
    printf("%d\r\n", baseN_to_decimal("17AF",16)); // Hex to decimal
    printf("%d\r\n", baseN_to_decimal("17af",16)); // Hex to decimal
    return 0;
}
//binary to decimal converter
long int bin2dec(long int binary_number,int i){
 if(binary_number == 0)
    return 0;
 else
    return ((binary_number%10)*pow(2,i) + bin2dec(binary_number/10,++i));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM