由于智商低,看了将近一天多才弄明白。家里机子上没有C++编译器,而JAVA面对指针时又显得苍白无力,只好请python出来了。我只是根据原理写的一个生成CRC 余数表。一个小DEMO。 不说了,上代码: ''' python version 3.1 crc data check/create crc-16 table ''' class Crc: def __init__(this): #gen this.gen = 0x1021 ''' 传入要验证的数据和数据的长度(在这里我没有用到数据的长度) ''' def run(this, data, datalen): #将一个字节扩大到一个字进行计算 data16 = data<<8 #循环取余 for a in range(8): #如果首位是1的话就进行取余 if((data16 & 0x8000)): #为防止数据扩大到三个字节(不知道python以外的语言会不会有这情况) #之所以要左移一位,是因为除数本来也有一个1,扯平了。 data16 = (data16<<1) & 0xffff data16 = data16 ^ this.gen else: #如果首位是0的话就左移一直到首位是1 data16 = data16<<1 #测试代码 start if((data&0x01) == 1): print (data16) else: print (data16, end="") print ("/t", end="") #测试代码 end #可以在这里直接返回data16 crrr = Crc() for co in range(256): crrr.run(co, 1)