(Python)IP地址转换
‘’仅个人学习过程中的笔记与记录‘’
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地址的转换函数
Python3 合法IP地址转换 - 犬饲Atsuhiro - 博客园 (cnblogs.com)
“别人应许给你的事物,不可当真。”
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本