我目前正在使用 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/