欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

任意长度的二进制字符串和十进制串的转换算法(高精度)

任意长度的二进制字符串和十进制串的转换算法(高精度)

因为最近在写一个进制转换器,所以遇到了一些问题,以下是我在写的过程中遇到的已经解决的问题,即如何将一个无限长度的二进制串转换为十进制串的算法。这是群里的一个朋友帮我写的,并非我所写,真的很感谢我的那位朋友,他真的很了不起。
今天我把它共享出来,希望这个程序能对有所需要的朋友提供一些帮助。

代码:

#include <stdio.h>
#include <string.h>
#define MAX_LEN 10000
typedef struct{
    int len;
    char value[MAX_LEN];
} TBigInt, *pBigInt;
void AddBit(pBigInt s,char BitValue){    //加一位, 0或者1。 
    int i;
    for (i=0;i<s->len;i++)
        s->value[i]*=2;
    s->value[0]+=BitValue;
    for (i=0;i<s->len;i++){
        s->value[i+1]+=s->value[i]/10;
        s->value[i]%=10;
    }
    if (s->value[s->len]) s->len++;
}
void OutputBigInt(pBigInt s){           //输出大整数类型
    int i;
    if (s->len==0){
        puts("0");
    } else {
        for (i=s->len-1;i>=0;i--)
            putchar(s->value[i]+'0');
        putchar('\n');
    }
}
int main(){
    static char buf[1000000];
    static TBigInt BigInt;
    while (scanf("%s",buf)!=EOF){
        memset(&BigInt,0,sizeof BigInt);
        int i;
        for (i=0;buf[i];i++)
            AddBit(&BigInt,buf[i]=='1'?1:0);
        OutputBigInt(&BigInt);
    }
    return 0;
}

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功