题目描述
输入一个字符串,加密输出,加密算法如下:将每个字符串转换为二进制数字,然后将这些二进制数字分别逆序后再拼接,得到加密字符串
思路分析:字符串的每个字符都用ASCII码表示,要将字符转换成二进制数字,可以采用位运算,每次通过右移将最低位取出并且存入新的字符串中,这样在转换二进制的同时就实现了逆序
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string chartobinary(char a)
{
string data;
while (a)
{
if ((a & 0x01) == 1) //取最右位
{
data.push_back('1');
}
else
{
data.push_back('0');
}
a=a >> 1;
}
return data;
}
int main()
{
string s;
while (cin>>s)
{
int lens = s.length();
vector<string> vs(1000);
for (int i = 0; i < lens; i++)
{
vs[i] = chartobinary(s[i]);
// reverse(vs[i].begin(), vs[i].end());
}
for (int i = 0; i < lens; i++)
{
string::iterator itr = vs[i].begin();
for (int j = 0; j <vs[i].size(); j++)
{
cout << itr[j];
}
}
cout << endl;
}
return 0;
}