题解 | #整数与IP地址间的转换#
整数与IP地址间的转换
https://www.nowcoder.com/practice/66ca0e28f90c42a196afd78cc9c496ea
while True:
try:
ip = map(int, input().split("."))
number = int(input())
except:
break
else:
# ip 转换成 整数
num = ""
for i in ip:
a = bin(i)[2:]
if len(a) < 8:
a = "0" * (8 - len(a)) + a
num += a
print(int(num, 2))
# 整数转换成ip
num2 = bin(number)[2:]
if len(num2) < 32:
num2 = "0" * (32 - len(num2)) + num2
ip = [int(num2[8 * i : 8 * i + 8], 2) for i in range(4)]
print(".".join(map(str, ip)))
# 开始:
(1)解题思路
(2)思路的代码实现方式
# 总结:
(1)为什么我的解题思路很傻逼?
bin、int我的知识点缺失,bin()可将数字默认转换为以ob开头的二进制。比如:10 > ob1010, 3 > 0b11
int(字符串, base) 可将 字符串转换成整数,如果base=2,那就说明字符串被当成了二进制数。如果是默认的10,这个字符串是啥,就显示啥。
base = 10 ,int("00001010000000000000001111000001", 10)) > 00001010000000000000001111000001
base = 2, int("00001010000000000000001111000001", 2)) > 167773121
(2)为什么我不懂代码实现方式?
(3)我为什么去debug了?
#数据仓库与数据分析实习#
OD专栏练习梳理 文章被收录于专栏
OD专栏练习梳理
