python - 将 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()
现在,当我运行它们时,我得到了:
- Python 2:\x02\xFFA\CRC
- Python 3: \x02 \xc3 \xbfA \CRC
Python2 的输出正是我所期望的,但我不明白 Python3 的输出。为什么我的字节被分成 2 个(\xc3 \xbf 而不是 \xFF),并且 CRC 也有同样的问题。
如何使用 Python3 获得相同的输出?
谢谢
解决方案
推荐阅读
- c++ - C++ 中编译器指令重新排序的保证
- javascript - 原始javascript中的sha256加密
- python - 如何迭代文件夹以获取第一个子目录中的内容?
- android - 如何在 Android 9 Pie 中从后台启动活动?
- winapi - 通过 CryptAPI 生成并添加到远程证书存储的自签名证书没有私钥
- python - 如何匹配csv文件中数据库中的值?
- sql - 我想选择它们在我的多边形之外的所有点
- uwp - UWP C#:如何使框架元素变为全窗口模式
- heroku - heroku.com 上的链接断开:主机不回答
- javascript - 如何在 apache2 VPS 的子域上托管 Node.js 应用程序?