我正在尝试使用python与设备通信.我已经交了一个包含存储信息的字节元组.如何将数据转换为正确的值:
响应=(0,0,117,143,6)
前4个值是32位int,告诉我已经使用了多少字节,最后一个值是使用的百分比.
我可以作为响应[0]访问元组,但无法看到我如何将前4个值放入我需要的int中.
将,
num =(response [0] << 24)+(response [1] << 16)+(response [2] << 8)+ response [3]
满足你的需求?
援助
请参阅在Python中将字节转换为浮点数
您可能想要使用struct模块,例如
import struct response = (0, 0, 117, 143, 6) struct.unpack(">I", ''.join([chr(x) for x in response[:-1]]))
假设一个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)