满意答案
6478qucz
2013.05.30
采纳率:44% 等级:12
已帮助:4734人
#include"stdio.h"
#include"string.h"
// LFSR进动一拍
unsigned char *LFSR_go(unsigned char *pzt, unsigned char *pjg, int n) //n为状态区字节数
{
unsigned char t=0;
int c=0,i;
for (i=0; i
t^=((t<<1)^(t<<2)^(t<<3)^(t<<4)^(t<<5)^(t<<6)^(t<<7)); //不同计算机运算循序不一样,这里从左到右算,t左移一位结果与t左移两位的结果进行异或操作
//以后依次迭代
if (t&0x80) c=1; //判断t的高位是否为1
for (i=n-1; i>=0; i--)
{
t=pzt[i];
pzt[i]=((t<<1)|c)&0xff; //感觉这里&0xff多余了,与0xff进行与操作应该还是原值,左移一位
c=(t&0x80)?1:0; //取首位值
}
return (pzt);
}
00分享举报