【发布时间】:2017-02-12 05:20:00
【问题描述】:
我正在尝试解决this 网站上的挑战。除了无法将位串正确转换为其 32 位有符号整数表示之外,我一切都正确。
例如我有这个位串:
block = '10101010001000101110101000101110'
我自己将此位串转换为 32 位有符号整数的方法:我部分记得在学校时第一位是符号位。如果它是 1 我们有负数,反之亦然。
当我这样做时,它会给我以 10 为底的数字。它只是将其转换为以 10 为底的数字:
int(block, 2) #yields 2854414894
我尝试排除第一位并转换剩余的 31 长度位串,然后检查第一位以确定这是否为负数:
int(block[1:32], 2) #yields 706931246
但正确答案是-1440552402。我应该对这个位串做什么操作才能得到这个整数?如果系统的字节顺序是小端还是大端,是否相关?我的系统是小端的。
【问题讨论】:
标签: python python-2.7 bits