当前位置:  开发笔记 > 编程语言 > 正文

如何将python元组(字节数组)的一部分转换为整数

如何解决《如何将python元组(字节数组)的一部分转换为整数》经验,为你挑选了2个好方法。

我正在尝试使用python与设备通信.我已经交了一个包含存储信息的字节元组.如何将数据转换为正确的值:

响应=(0,0,117,143,6)

前4个值是32位int,告诉我已经使用了多少字节,最后一个值是使用的百分比.

我可以作为响应[0]访问元组,但无法看到我如何将前4个值放入我需要的int中.



1> 小智..:

将,

num =(response [0] << 24)+(response [1] << 16)+(response [2] << 8)+ response [3]

满足你的需求?

援助


当通过导入模块阅读上述答案时,使用循环和理解来处理一些微不足道的事情,我真的开始摸不着头脑......这个答案实际上是如何(并且应该)在任何地方完成的,没有什么能够在速度和简单的条款......

2> Jay..:

请参阅在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)

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有