c - 我如何计算以下 TCP/IP 协议(protocol)的 CRC 校验和

标签 c python-3.x sockets networking network-programming

enter image description here

这是以下规范。

我使用 python3 使用简单协议(protocol)通过 TCP/IP 与服务器通信,如图所示。

我想知道如何在这里计算 CRC 校验和?。正如您在命令包规范中看到的那样,它必须是 1 个字节。

最佳答案

我假设在 Python 3 中,如果你有以字节为单位的数据包,即说 packet = bytes(0xF0, 0xF0, 0xDE, 0xAD, 0xBE, 0xEF, 0xDE, 0xAD, 0xBE, 0xEF, 0xF0, 0xF0) ,校验和将只是这些字节之和的 1 补码的最低有效字节,即 (0 - sum(packet)) & 0xFF

因此,如果您有有效负载payload,这将是将其变成完整数据包的代码:

packet = b'\xF0\xF0' + payload + b'\xF0\xF0'
packet += bytes([(0 - sum(packet)) & 0xFF])

关于c - 我如何计算以下 TCP/IP 协议(protocol)的 CRC 校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43652773/

相关文章:

c - Websocket key 哈希

C - 从特定的大范围中获取素数

python xml minidom 获取包含子节点和文本的子节点的全部内容

python-3.x - 如何使用LSTM对图像进行时间序列预测?

c# - 如何检查 byte[] 是否只包含零?

java - Java Swing 应用程序中的套接字连接挂起

c - 为什么把变量的地址赋给指针是错误的?

c - 设置套接字接收缓冲区大小(不带 block )

python - 从数据库查询输出创建 JSON 字符串

c++ - 如何摆脱 TCP 阻塞 connect() 调用?