帮我写一个crc生成代码
时间: 2023-08-28 12:21:35 浏览: 86
当然可以,以下是一个简单的 Python 代码实现:
```python
def crc(data, crc_poly):
crc = 0
for byte in data:
crc ^= byte
for i in range(8):
if crc & 0x80:
crc = (crc << 1) ^ crc_poly
else:
crc <<= 1
return crc
```
其中 `data` 是要计算 CRC 的数据(以字节为单位),`crc_poly` 是 CRC 多项式。该函数返回计算出的 CRC 值。
调用示例:
```python
data = b'hello world'
crc_poly = 0xEDB88320
result = crc(data, crc_poly)
print(hex(result))
```
输出结果为 `0x1f5c9ea3`,即 CRC32 值。注意,输出结果可能与其他 CRC 工具计算结果不同,这是因为不同的实现可能采用不同的 CRC 多项式、初始值和位反转等参数。
相关问题
帮我生成一个多项式为0x11D的CRC表格
好的,多项式为0x11D的CRC表格可以使用以下Python代码生成:
```python
def generate_crc_table(poly):
table = []
for i in range(256):
crc = i
for j in range(8):
if crc & 0x80:
crc = (crc << 1) ^ poly
else:
crc <<= 1
crc &= 0xFF
table.append(crc)
return table
crc_table = generate_crc_table(0x11D)
print(crc_table)
```
这段代码会生成一个256字节的CRC表格,你可以将其保存到文件中以便后续使用。
阅读全文