(Python)IP地址转换

您所在的位置:网站首页 python编写进制转换 (Python)IP地址转换

(Python)IP地址转换

#(Python)IP地址转换| 来源: 网络整理| 查看: 265

‘’仅个人学习过程中的笔记与记录‘’ IP地址转换 题目描述:

IP 地址是32 位的二进制字符串,输入一个合法的二进制表示的IP 地址,

请将其转换为用“.”分隔开的4 个十进制数组成十进制格式输出(输出格式:204.148.21.114)。

【样例输入】

11001100100101000001010101110010

【样例输出】

204.148.21.114

 

解1: 思考:

IP地址为32位二进制字符串,转换为十进制为固定的四个十进制数,即每八位进行进制转换,设想:

构建4次循环通过 % 和 / 运算符对输入内容依次进行分割,用int(num,2)将二进制转换为十进制,再用方法str.append()把分割的元素依次再追加到s[]字符串内

代码如下:

def ip(num): #构建ip函数 s = [] for i in range (4): a = num % 10000000 s.append(str(int(a),2)) #将转换后的十进制转换为字符形式 num /= 10000000 return '.'. join (s [:: -1]) #在每个字符(除最后一个)之间添加“.” #s[::-1]操作为将其逆排序 a = ip(input ()) print(a)

运行结果:

TypeError: not all arguments converted during string formatting

度娘一下了解到:

”% 操作符只能直接用于字符串(‘123’),列表([1,2,3])、元组,因此需要一一匹配操作符。“

即%和后面的参数数量不对应...研究了半天改了几次代码都是各种错误,查询其他大佬的解决方案,有的又用了还没学习到的命令,且行数略有一点多...

目前初学中的初学水平实在没办法解决这个方案的问题,留在这里等以后来解答。

 

后又看见了不少大佬的博客,发现了一个最为简单的方法:

 

解2: 思考:

直接将字符串进行切片,再通过int转换进制,更改结尾命令,五行代码就解决。

代码如下:

ip = input() print(int(ip[0:8],2),end='.') print(int(ip[8:16],2),end='.') print(int(ip[16:24],2),end='.') print(int(ip[24:32],2),end='')

运行结果与示例一致。

该代码实在简短有效且粗暴,感觉自己智商被侮辱,谨记。

但是依然希望通过之后的学习能回来完美解决第一种想法的问题。

 

 

 

感谢下面几位大佬的博客以进行参考:

python整数与IP地址转换_Python热爱者的博客-CSDN博客_python创建一个从整数到ip地址的转换函数

Python学习笔记:TypeError: not all arguments converted during string formatting_Big_quant的博客-CSDN博客_argument converted

Python3 合法IP地址转换 - 犬饲Atsuhiro - 博客园 (cnblogs.com)

 

 

 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3