首页 > 解决方案 > 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

干杯

标签: pythonpython-2.7

解决方案


使用上述方法找到无符号result数后,可以将其转换为有符号整数:

max_int = 2**(8*len(data)-1)-1
result = result - (2 * (max_int + 1) if result > max_int else 0)

推荐阅读