【问题标题】:How to make a list of Binary numbers a list of Dotted Decimal Numbers?如何使二进制数列表成为点分十进制数列表?
【发布时间】:2016-05-16 01:19:51
【问题描述】:

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

我正在努力寻找代码来转换列表。我可以把所有的空格变成句号,但是我不能把二进制改成十进制。

【问题讨论】:

  • 这是一个网络问题。所以,先搜索一下。到目前为止,您尝试过什么?
  • int('10001001', 2)?
  • 斜线表示法称为 CIDR 表示法。

标签: python list binary decimal


【解决方案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)]
>>> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2016-09-03
    • 1970-01-01
    相关资源
    最近更新 更多