如何将二进制数列表列为虚线十进制数?

时间:2016-05-16 01:19:51

标签: python list binary decimal

我在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,......]

我正在努力寻找代码来转换列表。我可以创建所有空格句点,但是我不能将二进制更改为十进制。

1 个答案:

答案 0 :(得分:1)

>>> 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)]
>>>