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 发布
本文介绍了一种将输入的字符串转换为二进制表示的方法。通过定义类`classStr2Bit`,实现了两个主要功能:`Str2bit`用于处理`std::string`类型的输入,而`Str2xit`则接受字符指针作为输入。这两个函数首先将每个字符(假设为十进制数字字符)转换为其对应的整数值,然后通过一系列位运算将其转换为二进制形式。
2274

被折叠的 条评论
为什么被折叠?



