python - Python将字节转换为有符号整数(想要一个负整数作为结果)
问题描述
我正在努力将字节数组(字节)转换回单整数。我发现很多示例对于转换后的正整数是有效的,但没有工作示例如何处理负数。
#example for positive numbers is working fine
data = I2C.read_i2c_block_data(I2CAddress, I2CRegister, 4)
result = 0
for b in data:
result = result * 256 + int(b)
我在带有 python 版本 2.7.9 的树莓上运行 python。
获得一个基本算法会很好。
我的目标是将字节数组从可变数据转换回负数。
可变数据在其数组中有这些项目:
[0xff, 0xff, 0xff, 0xe7]
目标负数是-25
(显然是0xe7
)
干杯
解决方案
使用上述方法找到无符号result
数后,可以将其转换为有符号整数:
max_int = 2**(8*len(data)-1)-1
result = result - (2 * (max_int + 1) if result > max_int else 0)
推荐阅读
- jmeter - 合并所有断言结果并将其作为 Jmeter 中 SMTP 采样器的主体发送
- spss - SPSS混合模型中的误差自由度(分母)如何计算?
- laravel - 在字符串上调用成员函数 between()
- powershell - 对多个参数的不同响应
- opengl - OpenGL上透明的纹理
- vue.js - 使用 OpenLayers 5 将 shapefile 转换为 geojson
- java - 使用循环制作整数
- linux - 如何删除“cargo new”创建的项目目录
- video - H.264 (.mp4) 视频流的 MPEG-TS 和 RTP 之间的区别?
- java - Redisson 服务器交互