如何将 0 添加到二进制列表中的第一个项目和 1 到其余项目? Python

how to add 0 to first and 1 to rest of items in the list in binary? Python

number = bin(16383)[2:] dict = ([number[num:num+7].zfill(7) for num in range(0, len(number), 7)])

我想要从 ['1111111', '1111111']['01111111', '11111111']

然后从二进制转成十六进制

从您已经拥有此列表的那一点开始:['1111111', '1111111'],您可以通过调用一些内置函数来执行列表推导来实现您想要的。

这里有两种方式(考虑l就是前面提到的列表):

[hex(int(prefix + binary, 2)) for prefix, binary in zip('0' + (len(l) - 1) * '1', l)]
# When measuring it with timeit, and a number=1000000, it returns 3.360108 seconds

[hex(int('0' + binary if i == 0 else '1' + binary, 2)) for i, binary in enumerate(l)]
# When measuring it with timeit, and a number=1000000, it returns 3.048211 seconds

它们都产生以下输出:

['0x7f', '0xff']

编辑:

考虑到您提供的 link,您以错误的方式处理二进制文件列表 (l)。您可以按如下方式进行:

number = bin(16383)[2:]
bytes_ = [number[max(0, i - 7): i].zfill(7) for i in range(len(number), 0, -7)]
bytes_.reverse()

hex_list = [hex(int(prefix + binary, 2)) for prefix, binary in
            zip((len(bytes_) - 1) * '1' + '0', bytes_)]
# hex_list content: ['0xff', '0x7f']