玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容

有经验的Python大师帮看看CRC16代码实现过程错误在哪里

1 装一个 16 位寄存器,所有数位均为 1。
2 取被校验串的一个字节与 16 位寄存器的高位字节进行“异或”运算。运算结果放 入这个 16 位寄存器。
3 把这个 16 寄存器向右移一位。
4若向右(标记位)移出的数位是1,则生成多项式1010 0000 0000 0001和这个寄 存器进行“异或”运算;若向右移出的数位是 0,则返回3。
5 重复3和4,直至移出 8 位。
6 取被校验串的下一个字节
7 重复3~6,直至被校验串的所有字节均与 16 位寄存器进行“异或”运算,并移位8次。
8 这个 16 位寄存器的内容即 2 字节 CRC 错误校验码。

def crc16(x):
    b = 0xA001
    a = 0xFFFF
    for byte in x:
        a ^= ord(byte)
        for i in range(8):
            last = a % 2
            a >>= 1
            if last == 1:
                a ^= b
    print hex(a)

有什么地方错误的吗?

玩蛇网文章,转载请注明出处和文章网址:http://www.iplaypy.com/wenda/wd19607.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年03月31日 - 18时15分43秒 发布自玩蛇网

我要分享到:
尚未注册畅言帐号,请到后台注册

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules