从Python3开始,前导零在bin()
转换中被排除
我试图操纵一个值并重新排列位,以便解码偏移量,但在转换后,我失去了该值的前导零
在不丢失前导零的情况下,哪种方法是最好的方法
代码如下:
bytefeed = 0x0229 # which becomes 0x2902
def decodebytes(bytefeed, negative = True):
rearrangedbits = list()
reversed_dat.extend([bytefeed[1], bytefeed[0]])
reversed_datdec = int.from_bytes(reversed_dat, byteorder='big', signed=False)
bitfield2 = list(bin(reversed_datdec)[2:])
rearrangedbits += bitfield2[4:10]
rearrangedbits += bitfield2[0:4]
rearrangedbits += bitfield2[10:17]
bitfieldec2 = int("".join(map(str, rearrangedbits)),2)
decovaroffset = finaloffset - bitfieldec2
print(bitfield2)
return decovaroffset
位字段2的结果是:
['1', '0', '1', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '0']
应该是:
['0', '0', '1', '0', '1', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '0']
zfill()
在这里不是一个选项,因为如果变量没有前导零,填充将影响偏移量
似乎
zfill()
解决了列表的问题,因为我以前误解了用法所以
应该是
相关问题 更多 >
编程相关推荐