我正在将 API 从 2.7 升级到 3.8。它被构建为通过 TCP 套接字与代理进行通信。我遇到了校验和计算不正确的问题。我从我的代理那里收到一条消息,说校验和是错误的。
我知道这不是我的代理,因为仅接受标头数据包的 CRC 检查,并且命令在代理端正确执行。
我遇到问题的代码行是:
body += format(struct.pack("=L", binascii.crc32(format(body).encode()) & 0xFFFFFFFF))
在 2.7 之前,这行代码没有编码/格式。
有谁知道我做错了什么?
我有一种强烈的感觉,它与“正文字符串”的编码有关。在将代码行分解为其组件后,我确认 binascii.crc32() 的 int 输出在 3.8 和 2.7 之间是不同的,并且对各种字节/字符类型进行了一些阅读,我变得非常迷茫。