汉明码是信道编码的一种,详情可百度,一下给出汉明码的一种实现方式:
#include<iostream>
#include<string>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main(){
srand((int)time(0));
string xinxi1;//需要编码的二进制序列
//随机生成一个长度最长为248的二进制序列
//unsigned int xinxi_length = rand() % 248 + 1;
//for (unsigned int i = 0; i < xinxi_length; i++) {
// xinxi.push_back(rand() % 2 + 48);
//}
//cout << "随机生成的二进制序列为" << xinxi << endl;
//手动输入一个二进制序列和这个二进制序列的长度
unsigned int xinxi_length;
cin >> xinxi1 >> xinxi_length;
string xinxi;
for (int i = xinxi1.size() - 1; i >= 0; i--) {
xinxi.push_back(xinxi1[i]);
}
cout << xinxi << endl;
//编码过程
unsigned int a = 128, jiaoyan=7;
for (; xinxi_length + jiaoyan < a; jiaoyan--, a /= 2);
jiaoyan++;
cout << xinxi_length << " " << jiaoyan << endl;
//将