gpt4 book ai didi

python - 如何将二进制数字列表变成点分十进制数字列表?

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:33 24 4
gpt4 key购买 nike

我在 python 中有这个列表,看起来像这样

mylist=[10000010 00000000 00000000 00000000 0, 10000010 00000000 01000000 00000000 0,10000010 00000000 10000000 00000000 1,10000010 00000000 11000000 000000000 1]

以及每个二进制数的斜杠数字列表。

slashes=[14,13,14,14]

我需要将列表转换为斜线表示法,如下所示,并在范围后面加上链接号。

mylist=[130.0.0.0/14 0, 130.0.64.0/13 0,......]

我正在努力寻找代码来转换列表。我可以将所有空格变成句点,但无法将二进制更改为十进制。

最佳答案

>>> mylist
['10000010 00000000 00000000 00000000 0', '10000010 00000000 01000000 00000000 0', '10000010 00000000 10000000 00000000 1', '10000010 00000000 11000000 000000000 1']
>>> slashes
[14, 13, 14, 14]

这是一种方法:

>>> ['.'.join(j[0][:4])+"/"+str(j[1])+" "+j[0][4] for j in list(zip([[str(int(i, 2)) for i in  item.split()] for item in mylist], slashes))]
['130.0.0.0/14 0', '130.0.64.0/13 0', '130.0.128.0/14 1', '130.0.192.0/14 1']

>>> list(map(lambda x:'.'.join(x[0][:4])+"/"+str(x[1])+" "+x[0][4], list(zip([[str(int(i, 2)) for i in  item.split()] for item in mylist], slashes))))
['130.0.0.0/14 0', '130.0.64.0/13 0', '130.0.128.0/14 1', '130.0.192.0/14 1']

这是中间步骤中发生的事情

>>> [[str(int(i, 2)) for i in  item.split()] for item in mylist]
[['130', '0', '0', '0', '0'], ['130', '0', '64', '0', '0'], ['130', '0', '128', '0', '1'], ['130', '0', '192', '0', '1']]
>>> list(zip([[str(int(i, 2)) for i in item.split()] for item in mylist], slashes))
[(['130', '0', '0', '0', '0'], 14), (['130', '0', '64', '0', '0'], 13), (['130', '0', '128', '0', '1'], 14), (['130', '0', '192', '0', '1'], 14)]
>>>

关于python - 如何将二进制数字列表变成点分十进制数字列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37245434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com