python实现CRC32计算


crc基础相关内容可参考: https://blog.csdn.net/xiaoyuanwuhui/article/details/131259671

计算法

# 将32位数据逆序排列
def reverse32(x):
    x = (((x & 0xaaaaaaaa) >> 1) | ((x & 0x55555555) << 1))
    x = (((x & 0xcccccccc) >> 2) | ((x & 0x33333333) << 2))
    x = (((x & 0xf0f0f0f0) >> 4) | ((x & 0x0f0f0f0f) << 4))
    x = (((x & 0xff00ff00) >> 8) | ((x & 0x00ff00ff) << 8))

    return (x >> 16) | (x << 16)


# 8位数据逆序排列
def reverse8(x):
    x = (((x & 0xaa) >> 1) | ((x & 0x55) << 1))
    x = (((x & 0xcc) >> 2) | ((x & 0x33) << 2))

    return (x >> 4) | (x << 4)


# 方法一:通过标准顺序的方式求解CRC校验值
def crc32_1(data):
    crc = 0xFFFFFFFF  # 初始值
    crc_polynomial = 0x04C11DB7  # 多项式值

    for byte in data:
        crc ^= (reverse8(byte) << 24)  # 将输入数据逆序处理
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值