CRC循环冗余校验算法是可以根据数据产生固定位数的散列函数,用来校验数据传输/保存后出现的错误,或者说是校验数据的完整性,例如压缩文件。生成的散列值在传输或者存储之前计算出来并且附加到数据后面。一般循环冗余校验值都是32位的二进制数,即8位的16进制字符串。一般冗余校验是值CRC-32CRC-32的...
分类:
编程语言 时间:
2014-12-09 13:51:32
阅读次数:
209
CRC校验算法
移位法
Unsigned short CRC16(unsigned char *pBuf,int nLength)
{
Unsigned short wReturn = 0xFFFF;
for(int nDataLen=0;nDataLen
{
wReturn^=(unsigned short)(BYTE(pBuf[nDataLen]));
for(int nInd...
分类:
数据库 时间:
2014-11-03 16:23:38
阅读次数:
316
在上篇文章中初步的分析了一下,Redis工具类文件中的一些用法,包括2个随机算法和循环冗余校验算法,今天,继续学习Redis中的其他的一些辅助工具类的用法。包括里面的大小端转换算法,sha算法在Redis中的实现和通用工具类算法util.c。
先来看看大小端转换算法,大小端学习过操作系统的人一定知道是什么意思,在不同的操作系统中,高位数字的存储方式存在,高位在前,低位在后,或是...
分类:
其他好文 时间:
2014-10-31 12:06:50
阅读次数:
227
今天开始研究Redis源码中的一些工具类的代码实现,工具类在任何语言中,实现的算法原理应该都是一样的,所以可以借此机会学习一下一些比较经典的算法。比如说我今天看的Crc循环冗余校验算法和rand随机数产生算法。
CRC算法全称循环冗余校验算法。CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)r位...
分类:
编程语言 时间:
2014-10-29 10:52:12
阅读次数:
213
在Java中>、>>、>>>三者的区别;在奇偶校验算法中用到。...
分类:
编程语言 时间:
2014-10-04 09:56:16
阅读次数:
171
IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算数IP据报的校验和。应该按如下步骤: (1)把IP数据报的首部都置为0,包括校验和字段。 (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和。 (3)把得到的结果存入校验和字...
分类:
其他好文 时间:
2014-09-11 23:46:12
阅读次数:
380
数据通信的校验算法核心思想:为了保证通讯数据的可靠性,通常加入校验来验证一帧数据是否有误,校验的方式有很多种,异或校验是常见的一种,你这个如2楼说的,是逐字节进行按位异或运算,结果放在最后一个字节,接收方收到数据进行同样计算,如果最后一个字节和计算结果一致,则可认为这一帧数据可信。...
分类:
编程语言 时间:
2014-09-10 19:34:10
阅读次数:
157
1即计算出所给数中包含1的个数方法一:每一位分别异或(时间复杂度O(n)n代表数位数)函数功能:如果1的个数为奇数个,则返回1,如果1的个数为偶数个,则返回0。parity_check(unsigned x){int val=0;while(x){val^=x;//val 和x进行异或运算x>>=1...
分类:
其他好文 时间:
2014-09-01 19:06:53
阅读次数:
281
题设:有N瓶水,其中有一瓶水有剧毒,如果小白鼠喝了会在24小时的时候死亡。问:用多少只小白鼠能够检测出哪瓶水有剧毒?要求:用的小白鼠数量少并且用时要短,并给出合理的过程与结论。我的解题思路如下:这是一个二进制开关(0/1)问题,类比于海明码校验算法,将药水进行二进制编号(0000000,000000...
分类:
其他好文 时间:
2014-08-29 01:19:46
阅读次数:
271
1 const static unsigned char __crctable[256] = 2 { 3 0x00, 0x91, 0xE3, 0x72, 0x07, 0x96, 0xE4, 0x75, 4 0x0E, 0x9F, 0xED, 0x7C, 0x09, 0x98, 0x...
分类:
其他好文 时间:
2014-08-14 23:24:26
阅读次数:
214