我在使用 12 转换为汉明代码时遇到问题C++



我有问题转换成汉明码12。我已经验证了它是否正确地将数字转换为二进制(以2为基数),现在当我试图使用该公式正确地转换安全位时,它给我的答案与我应该得到的答案不同。


#include <iostream>
#include <vector>
using namespace std;
void print(vector<int> x){

for (int i = 0; i < x.size(); i++){
cout << x[i];
}
cout << endl;

}
vector<int> correctCode(vector<int> x, int pos){
vector<int> correctedCode = x;
cout << "Wrong Code: ";
print(x);

if (correctedCode[pos] == 0){
correctedCode[pos] = 1;
}
else
{
correctedCode[pos] = 0;
}
cout << "Corrected Code: ";
print(correctedCode);
return correctedCode;
}
//Convert
void convertBinary(int val){
vector<int> binaryVal;
vector<int> binaryBase = {64,32,16,8,4,2,1};
for (int i=0; i < 7; i++){
if(val >= binaryBase[i]){
val -= binaryBase[i];
binaryVal.push_back(1);
}
else{
binaryVal.push_back(0);
}
}
//Security 1
binaryVal[0] = (binaryVal[2]+binaryVal[4]+binaryVal[6])%2;

//Security 2
binaryVal[1] = (binaryVal[2]+binaryVal[5]+binaryVal[6])%2;

//Security 3
binaryVal[3] = (binaryVal[4]+binaryVal[5]+binaryVal[6])%2;



print(binaryVal);
}
int main(int argc, const char * argv[]) {

cout << "12 = ";
convertBinary(12);
cout << endl;

}

二进制= 0001100

12 = 1001100(这是我得到的)应该是= 0111100(从我的教授提到的)

我在将二进制转换为汉明时出错了。我只是将二进制码的后四位数字分配给消息位,然后在正确计算安全位后插入消息位。


int m3,m5,m6,m7;
m3 = binaryVal[3];
m5 = binaryVal[4];
m6 = binaryVal[5];
m7 = binaryVal[6];

binaryVal[0] = (m3+m5+m7)%2;
binaryVal[1] = (m3+m6+m7)%2;
binaryVal[3] = (m5+m6+m7)%2;

binaryVal[2] = m3;
binaryVal[4] = m5;
binaryVal[5] = m6;
binaryVal[6] = m7;

最新更新