Python bin()和前导零

2024-10-03 09:20:57 发布

您现在位置:Python中文网/ 问答频道 /正文

从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()在这里不是一个选项,因为如果变量没有前导零,填充将影响偏移量


Tags: 方法binpython3listdat偏移量int前导
1条回答
网友
1楼 · 发布于 2024-10-03 09:20:57

似乎zfill()解决了列表的问题,因为我以前误解了用法

所以

bitfield2 = list(bin(reversed_datdec)[2:])

应该是

bitfield2 = list(bin(reversed_datdec)[2:].zfill(16))

相关问题 更多 >