python - 将 32 位整数输入转换为 IP 地址时出错
问题描述
我正在尝试将 32 位整数输入转换为 IP 地址,但我很难正确打印 IP 地址。
例如,我为我的程序提供一个 32 位整数,10000000111111110000001100001111
我得到的结果是.......128........33023........8453891........2164196111
.
def main():
integer_input = input('Welcome. Please provide a 32 bit integer.')
ip = ''
value = 0
for i, d in enumerate(integer_input):
value *= 2
value += int(d)
if (i+1) % 8 == 0:
ip += str(value)
if (i+1) is not 32:
ip += '.'
value = 0
print(ip)
main()
解决方案
对所有八位字节重复使用,并且在打印出值后value
永远不会重置回。0
如果value
在计算八位字节后重置回 0,您将得到正确的结果。
基本上添加value = 0
到以下块,即:
if (i+1) % 8 == 0:
ip += str(value)
value = 0
执行:
>>> main()
Welcome. Please provide a 32 bit integer.10000000111111110000001100001111
.......128........255........3........15
此外,您永远不想用来is
比较数字之间的相等性。即你应该有这个
if (i+1) != 32:
推荐阅读
- javascript - 使用 Typescript 扁平化 Apollo/Hasura GraphQL 查询的结果
- jsf - 如果您等待更长的时间/空闲时间会话,confirmDialog commandButton 不会重定向/不执行任何操作
- c# - 数据表 - 组合框中的 SelectedIndex
- powershell - VBoxManage 中的 PowerShell 错误 unregistervm --delete
- javascript - 使用 React.js 将 HTML 标记从富文本编辑器保存到 MongoDB
- java - 春不丝豆
- c# - 在 ANTLR4 生成的类中“找不到合适的方法来覆盖”
- c# - 使用 Nest + C# 在弹性搜索中查找具有空字段 / Attachment.Content 的文档
- kubernetes - 如何使用/安装 Ansible 集合 - 内容没有名为“所有者”的字段,抱歉,找不到 community.kubernetes
- arcgis - 使用 ArcGIS API for javascript 从要素图层中选择特定要素以在查找现有位置分析中查找相交