python 写一个CRC校验
时间: 2023-06-20 21:05:00 浏览: 439
下面是一个简单的 Python 实现 CRC 校验的例子:
```python
def crc(data: bytes, poly: int) -> int:
"""
计算CRC校验码
:param data: 要进行校验的数据,字节类型
:param poly: 生成多项式的值,整型
:return: CRC校验码,整型
"""
# 将数据转换成比特串
bit_string = "".join("{:08b}".format(byte) for byte in data)
# 将生成多项式转换成比特串
poly_string = "{:b}".format(poly)
# 初始化余数为0
remainder = 0
# 逐位计算余数
for bit in bit_string:
# 将余数左移一位,并将当前比特位添加到末尾
remainder <<= 1
remainder |= int(bit)
# 如果余数最高位为1,则进行异或操作
if remainder & (1 << len(poly_string) - 1):
remainder ^= poly
# 返回余数作为CRC校验码
return remainder
```
这里的 `data` 参数是要进行校验的数据,类型为字节串;`poly` 参数是生成多项式的值,类型为整型。
使用时,可以调用这个函数并传入相应的参数,例如:
```python
data = b"hello world"
poly = 0x1021
crc_code = crc(data, poly)
print(hex(crc_code))
```
这个例子中,我们传入了一个字符串 "hello world",并指定了生成多项式为 0x1021。函数返回的值是一个整型,表示计算得到的 CRC 校验码。最后我们将它打印出来,以十六进制形式显示。
阅读全文