我要用一个无校验的方式,发送给偶校验的接收方,所以必须自己生成一个偶校验位(这种想法有错吗?),而我要发送的数据是一个结构,当然到最后是用Byte *Ptr指向的一块内存区了,请问我如何加,加在哪儿?能不能给出一个具体的编码范例呀?我在网上找到了一个字节的偶校验函数,是用位来做的,
#define testbit(var,bit)((var)&(1<<bit)))
byte giet_Result(byte change_data)
{
unsigned char temp = 0;
for(int i=8;i;i--)
{
temp^=change_data;
change_data>>=1;
}
return testbit(temp,1);
上面的函数有对有错,请各帮我指点一下,这个好位是一个字节(8位?)的校验,也没有读懂,还有就是能不能给出一个通用校验函数,对传出的byte进行偶校验,并加上校验位,这样,就可以用无校验(VC++)的方式发送,而对方就可以用偶校验来接收,就不会出错了.
我在做zigbee2420,就是这个在用,搞得头大,请一定帮忙,200分送上(我在VC++还开了贴)!
你看看这个帖子,会不会有点帮助
http://community.csdn.net/Expert/topic/4226/4226518.xml?temp=.6936914
校验位在两个结构的位置应该是一样的.不然收发包就太麻烦了
q 加我QQ:123555261我发给你/1
楼主的那个函数的意思是这样的:
从所要校验的函数第0bit开始向最高位校验,
使用异或操作,
这样当没遇到1时,temp会一直等于0,
如果遇到了1,那么temp就会等于1,
在temp=1时,如果遇到了0,那么temp不变,如果遇到1,就变回成0,
刚好能满足1的数量为偶数就抵消.
所以返回值为0表示正确,1表示错误.