如何将 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']
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']