求CRC校验中的帧差错检验代码(C++)
由于目前只拿了几道题当作样例,结果和手算的一样,所以可能会出错,还请见谅。
输入
s1为传输数据左移R位后的二进制数
s2为生成式G
输出
冗余码R
#include<iostream>
using namespace std;
int main()
{
int cnt = 0, j = 0;
string s1; //= "101111001010100000";
string s2; //= "100111";
cin >> s1;
cin >> s2;
int len = size(s1);
int len_1 = size(s2);
for (int i = 0; i < len;i++)
{
if (j == len_1)
{
j = 0;
for (int k = 0; k < len; k++)
{
if (s1[k] != '0')
{
i = k;
break;
}
}
}
if ((size(s1) - i) < size(s2) && j == 0)
{
for (int j = i; j < len; j++)
cout << s1[j];
break;
}
if (s1[i] == s2[j])
{
s1[i] = '0';
j += 1;
continue;
}
else if (s1[i] != s2[j])
{
s1[i] = '1';
j += 1;
continue;
}
}
}
样题1
结果
样题2