2.2 算法实现
接受两个unsigned char类型(1B)变量left和right,返回unsigned char类型结果,其为left和right的伽罗华乘法结果。
unsigned char find_result(unsigned char left,unsigned char right)
{
//poly数组存储是码字
unsignedchar poly[8] = {0x1d, 0x3a, 0x74, 0xe8,0xcd, 0x87, 0x13, 0x26};
unsignedchar i, bit;
unsignedshort temp = 0;//16位变量,存储中间结果,必须初始化为0
unsignedchar h_temp, l_temp;//用来存储temp的高8位和低8位
//本位相乘
for(i = 0; i < 8; i += 1)
{
bit= (right >> i) & 1; //以上例来说,从右到左获取01111001的第i+1位
if(bit)//如果第i+1位不为0
temp^= (left << i); //11010101左移i位和temp异或并存储到temp
}