python - 如何在 Python 中将两个字节的整数转换回整数?

标签 python serial-port byte arduino

我目前正在使用 Arduino,它通过串行(使用 pySerial)将一些整数 (int) 输出到我为 编写的 Python 脚本Arduino 与飞行模拟程序 X-Plane 通信。

我设法将原始整数分成两个字节,以便将其发送给脚本,但我在重建原始整数时遇到了一些麻烦。

我尝试使用基本的按位运算符(<<、>> 等),就像我在类似 C++ 的程序中所做的那样,但它似乎不起作用。

我怀疑它与数据类型有关。我可能在相同的操作中使用带有字节的整数,但我无法真正分辨每个变量持有哪种类型,因为据我所知,你并没有真正在 Python 中声明变量(我对 Python 很陌生) .

self.pot=self.myline[2]<<8
self.pot|=self.myline[3]

最佳答案

您可以使用 struct在整数和表示形式之间转换为字节的模块。在您的情况下,要将 Python 整数转换为两个字节并返回,您将使用:

>>> import struct
>>> struct.pack('>H', 12345)
'09'
>>> struct.unpack('>H', '09')
(12345,)

struct.pack 的第一个参数和 struct.unpack表示您希望如何格式化数据。在这里,我使用 > 要求它处于大结局模式。前缀(你可以使用 < 表示小端,或 = 表示原生)然后我说有一个由 H 表示的单个无符号短整数(16 位整数) .

其他可能性是 b对于有符号字节,B对于无符号字节,h对于带符号的短(16 位),i对于带符号的 32 位整数,I对于无符号的 32 位整数。您可以通过查看 struct 的文档获得完整列表。模块。

关于python - 如何在 Python 中将两个字节的整数转换回整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903791/

相关文章:

java - 从 Java 代码转换而来的 Python 错误

c# - 用于解析 C# 的十六进制串行输入

c# - 将 System.IO.Stream 转换为 Byte[]

binary - 为什么一个字节只有 0 到 255?

objective-c - 检查 NSData 对象中的位

python - 如何解决 "ModuleNotFoundError: No module named ' PIL'"的问题?

python - 如何在基于通用类的 View 中更改 django 中的时间格式

python - Pandas apply() 自定义函数使用多个列作为 "input"

c# - 释放未插入的虚拟串行端口

c# - 有没有办法检查串口(RS-232)连接设备的电源开/关?