class Str2Bit{
public:
std::string Str2bit( const std::string &input){
std::string cpy = input;
int data[1010]; // 保存10进制下的数
memset(data, 0, sizeof(data));
int output[1010]; // 保存输出结果
memset(output, 0, sizeof(output));
for (int i = 0; i < cpy.size(); i++){
data[i] = cpy[i] - '0';
}
int sum = 1;
int d = 0;
int len = cpy.size();
int k = 0;
while (sum) {
sum = 0;
for (int i = 0; i < len; i++){
d = data[i] / 2;
sum += d;
if (i == len - 1)
output[k++] = data[i] % 2;
else
data[i + 1] += (data[i] % 2) * 10;
data[i] = d;
}
}
std::string ans;
if (k == 0){
output[k] = 0;
k--;
}
if (k == -1){
ans.push_back('0');
}
else{
for (int i = 0; i < k; i++){
ans.push_back(output[k - i - 1] + '0');
}
}
return ans;
}
char * Str2xit(char *input){
std::string cpy;
int l = strlen(input);
for (int i = 0; i < l ; i++){
cpy.push_back(input[i]);
}
int data[1010]; // 保存10进制下的数
memset(data, 0, sizeof(data));
int output[1010]; // 保存输出结果
memset(output, 0, sizeof(output));
for (int i = 0; i < cpy.size(); i++){
data[i] = cpy[i] - '0';
}
int sum = 1;
int d = 0;
int len = cpy.size();
int k = 0;
while (sum) {
sum = 0;
for (int i = 0; i < len; i++){
d = data[i] / 2;
sum += d;
if (i == len - 1)
output[k++] = data[i] % 2;
else
data[i + 1] += (data[i] % 2) * 10;
data[i] = d;
}
}
char ans[1010];
memset(ans, 0 , sizeof(ans));
int ptr = 0;
if (k == 0){
output[k] = 0;
k--;
}
if (k == -1){
ans[ptr++]='0';
}
else{
for (int i = 0; i < k; i++){
ans[ptr++]=output[k - i - 1]+'0';
}
}
ans[ptr] = '\0';
return ans;
}
};
string型大数转换二进制形式
最新推荐文章于 2021-02-13 12:56:22 发布