#include
#include
// 转化后的二进制最多的位数
#define MAX_BIN_LENGHT 100
// 输入的表达式最多的字符数
#define MAX_EXP_LENGHT 100
// 根据表达式得到二进制数
void getBinary(char *express,int binary[MAX_BIN_LENGHT]);
// 根据两个二进制数,得到CRC校验结果
void getQuoRem(int *binaryY,int binaryG[MAX_BIN_LENGHT], int result[MAX_BIN_LENGHT]);
// 打印二进制数
void printBinary(int binary[MAX_BIN_LENGHT]);
// 得到正序的二进制数
void getOrderedBinary(int originalBinary[MAX_BIN_LENGHT],int orderedBinary[MAX_BIN_LENGHT]);
// 得到二进制位数
int getBinaryLength(int originalBinary[MAX_BIN_LENGHT]);
int main(int argc,char *argv[])
{
int binaryY[MAX_BIN_LENGHT]={0}; // 存放Y(x)转化后的二进制数
int binaryG[MAX_BIN_LENGHT]={0}; // 存放G(x)转化后的二进制数
int binaryTemp[MAX_BIN_LENGHT]={0}; // 存放表达式转化后的倒序二进制数
int binaryResult[MAX_BIN_LENGHT]={0}; // 存放最后要发送的加上校验码的数据
char express[MAX_EXP_LENGHT]; //存放输入的表达式
printf("请输入Y(x)表达式:\n");
scanf("%s",express);
getBinary(express,binaryTemp);
getOrderedBinary(binaryTemp,binaryY);
printf("请输入G(x)表达式:\n");
scanf("%s",express);
getBinary(express,binaryTemp);
getOrderedBinary(binaryTemp,binaryG);
// 得到有校验码的数据
getQuoRem(binaryY,binaryG,binaryResult);
printf("\nY(x)的二进制为:");
printBinary(binaryY);