输入一个大数将其转化为二进制输出

来源:互联网 发布:淘宝上好看的卫衣店 编辑:程序博客网 时间:2024/06/05 14:34

将一个大数转化为2进制输出

#include <iostream>#include <cstring>#include <ctype.h>#include <vector>#include <sstream>using namespace std;vector<int> turn(string X){    int M=10,N=2;    vector<int> vec;        int data[1010];  //保存M进制下的各个位数        int output[1010];  //保存N进制下的各个位数        memset(output,0,sizeof(output));        for(int i=0;i<X.length();i++){            if(isalpha(X[i]))                data[i] = X[i] - 'A' + 10;            else                data[i] = X[i] - '0';        }        int sum = 1;        int d  = 0;        int len = X.length();        int k = 0;        while(sum){            sum = 0;            for(int i=0;i<len;i++){                d = data[i] / N;                sum += d;                if(i == len-1){                    output[k++] = data[i] % N;                }                else{                    data[i+1] += (data[i] % N) * M;                }                data[i] = d;            }        }        if(k == 0){            output[k] = 0;            k--;        }        if(k == -1){            cout<<0<<endl;        }        else{            for(int i=0;i<k;i++){                if(output[k-i-1] > 9)                    //cout<<(char)(output[k-i-1]+ 'a' - 10);                    vec.push_back((char)(output[k-i-1]+ 'a' - 10));                else                   // cout<<output[k-i-1];                   vec.push_back(output[k-i-1]);            }        }      return vec;}int main(){string str;cin>>str;    vector<int> vecs;        vecs=turn(str);        vector<int>::iterator iter;    for(iter=vecs.begin();iter!=vecs.end();++iter)    cout<<*iter;       return 0;}


原创粉丝点击