您的位置:首页 > 其它

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

2017-09-28 20:19 120 查看
将一个大数转化为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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐