我正在尝试使用python与设备通信.我已经交了一个包含存储信息的字节元组.如何将数据转换为正确的值:
响应=(0,0,117,143,6)
前4个值是32位int,告诉我已经使用了多少字节,最后一个值是使用的百分比.
我可以作为响应[0]访问元组,但无法看到我如何将前4个值放入我需要的int中.
小智 13
将,
num =(response [0] << 24)+(response [1] << 16)+(response [2] << 8)+ response [3]
满足你的需求?
援助
Jay*_*Jay 11
您可能想要使用struct模块,例如
import struct
response = (0, 0, 117, 143, 6)
struct.unpack(">I", ''.join([chr(x) for x in response[:-1]]))
Run Code Online (Sandbox Code Playgroud)
假设一个unsigned int.可能有更好的方法来进行解包转换,使用join的列表理解只是我想出的第一件事.
编辑:另请参阅ΤΖΩΤΖΙΟΥ关于有关字节序的答案的评论.
编辑#2:如果你不介意使用阵列模块,这里有一个替代方法,不需要列表理解.感谢@ JimB指出unpack也能在阵列上运行.
import struct
from array import array
response = (0, 0, 117, 143, 6)
bytes = array('B', response[:-1])
struct.unpack('>I', bytes)
Run Code Online (Sandbox Code Playgroud)