2024-09-01
售卖作品
00

目录

帮助、问询

在这里插入图片描述

发送:

在这里插入图片描述

接受:

在这里插入图片描述

8个字节,最后2个字节是CRC校验码。

在这里插入图片描述

c
unsigned int crc16(unsigned char *ptr, unsigned char len) { unsigned int crc = 0xFFFF; unsigned char i; while (len--) { crc ^= *ptr++; for (i = 0; i < 8; i++) { if (crc & 0x01) { crc >>= 1; crc ^= 0xA001; } else { crc >>= 1; } } } return crc; }

python代码。

如果有序列[0x01, 0x03, 0x01, 0xF4, 0x00, 0x01, 0xC4, 0x04],

0xC4是crc16的低字节,0x04是crc16的高字节,

python
import binascii def calculate_crc(data): # 初始化CRC值为0xFFFF crc = 0xFFFF for byte in data: crc ^= byte for _ in range(8): if crc & 0x0001: crc = (crc >> 1) ^ 0xA001 else: crc = crc >> 1 # 返回CRC校验码作为一个字节数组 return crc.to_bytes(2, byteorder='little') # 给定序列 data = [0x01, 0x03, 0x01, 0xF4, 0x00, 0x01, 0xC4, 0x04] # 计算CRC校验码 crc_result = calculate_crc(data[:-2]) # 将CRC校验码打印为16进制字符串 crc_hex = binascii.hexlify(crc_result).decode('utf-8') print(f"CRC校验码为: 0x{crc_hex.upper()}")

CRC校验码为: 0xC404

帮助、问询

csharp
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!