我正试图解决this站点上的问题。除了无法正确地将位串转换为其32位有符号整数表示形式外,我的一切都正确。将bitstring转换为32位有符号整数会产生错误的结果
例如,我有这样的比特串:我部分从学校请记住,第一位为符号位:
block = '10101010001000101110101000101110'
我这个位串转换为32位有符号整数的自己的路。如果它是1,我们有负数,反之亦然。
我这样做的时候,它给了我它只是将它转换为10进制以10为底数的数字:即检查后
int(block, 2) #yields 2854414894
我试图排除的第一位,并转换其余31位串的长度,第一位来决定这是否是负数或不是:
int(block[1:32], 2) #yields 706931246
但正确答案是-1440552402
。我应该怎么做这个bitstring得到这个整数?如果系统的字节顺序是小端或大端,它是否相关?我的系统是小端。
到http://stackoverflow.com/questions/1375897/how-to-get-the-signed-integer-value-of-a-long-in-python类似 –