任意长度数据进制转化为十进制

C语言实现进制转换:二、八、十六进制转十进制
该文章提供了三个C语言程序,分别用于将二进制、八进制和十六进制数转换为十进制。程序使用字符串处理和位运算,适用于初学者学习不同进制间的转换方法。

对初学者来说进制之间的转化很多时候因为长度不超过int\long类型的长度很多时候都都是数据对10取余取出最后一位后进行累乘累加后进行,但是对于工程来说long long的长度也相差甚远,这时候就需要用char类型的数组以字符串的形式进行输入,在处理字符类型的数据时要用#include <string.h>的头文件,或者将单字符数据转化为整形 b=a-'0';。

二进制转化十进制

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

void main()
 {
    char binary[100];//储存二进制数
    int decimal = 0;

    scanf("%s", binary);//输入二进制字符

    int len = strlen(binary);
    //从左到右遍历二进制数
    for (int i = 0; i < len; i++) 
    {
        if (binary[i] == '1') 
        {
            decimal += 1 << (len - 1 - i);
        }
    }
    printf("%d", decimal);
}

八进制转化为十进制

#include <stdio.h>

int main() {
    char octal[100];
    int decimal = 0, base = 1, i = 0;

    printf("请输入8进制数: ");
    scanf("%s", octal);

    // 计算8进制数的长度
    while (octal[i] != '\0') {
        i++;
    }
    
    // 从右到左遍历8进制数,计算十进制值
    for (int j = i - 1; j >= 0; j--) {
        decimal += (octal[j] - '0') * base;
        base *= 8;
    }

    printf("转换后的十进制数为: %d", decimal);

    return 0;
}

十六进制转化十进制

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

int main() {
    char hex[100];
    long decimal;
    
    printf("十六进制数为: ");
    scanf("%s", hex);
    
    decimal = strtol(hex, NULL, 16);
    
    printf("十进制数为 %ld\n", decimal);
    
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值