用python写出CRC代码
时间: 2023-11-13 16:07:28 浏览: 68
以下是Python实现的CRC算法示例代码:
```python
def crc(data: bytes, poly: int, init: int) -> int:
"""
计算CRC校验值
:param data: 待计算数据
:param poly: CRC生成多项式
:param init: 初始值
:return: CRC校验值
"""
crc_value = init
for byte in data:
crc_value ^= byte
for _ in range(8):
if crc_value & 0x80:
crc_value = (crc_value << 1) ^ poly
else:
crc_value <<= 1
return crc_value
if __name__ == '__main__':
data = b'hello, world!'
poly = 0x1021 # CRC-16-CCITT生成多项式
init = 0xFFFF # CRC-16-CCITT初始值
crc_value = crc(data, poly, init)
print(hex(crc_value))
```
说明:
- `data`:待计算的数据,类型为`bytes`。
- `poly`:CRC生成多项式,类型为`int`,表示一个多项式的二进制表示。
- `init`:CRC初始值,类型为`int`,通常为全1或全0。
- `crc`函数:计算CRC校验值的函数,返回一个`int`类型的值。
- 实现中采用了标准的位移异或方法计算CRC校验值。
以上代码实现了CRC-16-CCITT算法。根据需要,可以修改`poly`和`init`的值来实现其他类型的CRC算法。
阅读全文