对字符串的每个字符进行奇校验,将字符串对应的ASCII码值转换为二进制,使1的个数是奇数,如果不是,最高位补1
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string chartostring(char c) {
string str;
int num = c;
while (num) {
str += (num % 2) + '0';
num /= 2;
}
reverse(str.begin(), str.end());
return str;
}
// 对字符串的每个字符进行奇校验,将字符串对应的ASCII码值转换为二进制,使1的个数是奇数
int main() {
string s;
while (cin >> s) {
string ans;
for (int i = 0; i < s.size(); i++) {
ans = chartostring(s[i]);
while (ans.size() < 8) {
ans.insert(0, 1, '0');
}
int cnt = 0;
for (int i = 0; i < ans.size(); i++) {
if (ans[i] == '1') cnt++;
}
// 1的个数为偶数,则最高位补1
if (cnt % 2 == 0) {
ans[0] = '1';
}
cout << ans << endl;
}
}
return 0;
}

京公网安备 11010502036488号