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

问题描述 投票:-1回答:1

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

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

然后将其从二进制转换为十六进制

python list binary hex
1个回答
0
投票

从你已经拥有这个列表的地方开始,你可以执行一个列表理解。['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']

EDIT:

考虑到你提供的链接,你是在做二进制文件列表(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']
© www.soinside.com 2019 - 2024. All rights reserved.