华为2018年七月笔试题

题目描述

输入一个字符串,加密输出,加密算法如下:将每个字符串转换为二进制数字,然后将这些二进制数字分别逆序后再拼接,得到加密字符串

思路分析:字符串的每个字符都用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;
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值