首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将二进制数字从简短类型转换为C中的十进制数

将二进制数字从简短类型转换为C中的十进制数
EN

Stack Overflow用户
提问于 2021-05-26 13:39:25
回答 1查看 303关注 0票数 0

我需要从一个文件中读取一个二进制数字,该二进制数字由C语言中的类型表示。

数字表示数组的大小,因此在读取数组后,我希望将该数字用作十进制值。

我试图将二进制数转换成十进制,但得到了错误的值。

例如:如果文件中的二进制数是0000000000000101,那么小数点的大小应该是5,但是当我使用“经典”二进制到十进制时,就得到了17的值。

“经典”功能:

代码语言:javascript
复制
void main()
{
    int  num, binary_val, decimal_val = 0, base = 1, rem;
 
    printf("Enter a binary number(1s and 0s) \n");
    scanf("%d", &num); 
    binary_val = num;
    while (num > 0)
    {
        rem = num % 10;
        decimal_val = decimal_val + rem * base;
        num = num / 10 ;
        base = base * 2;
    }
    printf("The Binary number is = %d \n", binary_val);
    printf("Its decimal equivalent is = %d \n", decimal_val);
}

当我只输入最后3个数字(101个)时,我得到了值5,但当我输入完整的数字(0000000000000101)时,我得到了17。

有什么办法解决这个问题吗?我在这里错过了什么?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-26 13:43:04

这个例子可以像你想的那样工作。

代码语言:javascript
复制
#include <math.h>
#include <stdio.h>
int convert(long long n);
int main() {
    long long n;
    printf("Enter a binary number: ");
    scanf("%lld", &n);
    printf("%lld in binary = %d in decimal", n, convert(n));
    return 0;
}
int convert(long long n) {
    int dec = 0, i = 0, rem;
    while (n != 0) {
        rem = n % 10;
        n /= 10;
        dec += rem * pow(2, i);
        ++i;
    }
    return dec;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67706154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档