首页 > 解决方案 > 将 python 2 移植到 python 3 串行文件

问题描述

我在将旧的 python2 脚本移植到以前运行良好的 python3 时遇到问题。这是 Python 2 代码,其目的是创建一个通过串行发送的命令:

def makeCommand(command, data=''):
    length = len(command) + len(data) + 1
    buf = [chr(length), chr(0xFF), command, data]
    checksum = 256 - sum[(ord(x) for x in buf)]%256
    buf.append(chr(checksum))

    return ''.join(buf)


def main():
    makeCommand('A')

main() 

Python3,有一些更新:

def makeCommand(command, data=''):
    length = len(command) + len(data) + 1
    buf = [chr(length), chr(0xFF), command, data]
    checksum = 256 - sum[x for x in buf)]%256
    buf.append(chr(checksum))

    return ''.join(buf).encode()

现在,当我运行它们时,我得到了:

Python2 的输出正是我所期望的,但我不明白 Python3 的输出。为什么我的字节被分成 2 个(\xc3 \xbf 而不是 \xFF),并且 CRC 也有同样的问题。

如何使用 Python3 获得相同的输出?

谢谢

标签: pythonencodeporting

解决方案


推荐阅读