HJ_33 整数与IP地址间的转换_模拟

发布时间 2023-03-25 16:36:23作者: Aneverforget

思路:模拟分析

知识点:

1、10进制与二进制互相转换

2、字符串切片

代码行数不算多,但依然有简化空间。参考高赞题解的思路,得到代码2。

#采用内置函数int(x,base)把任何进制转换成10进制
#bin(x) 把int,十进制整型转换成二进制。

 

 1 ip=list(map(int,input().split('.')))
 2 #ip=list(map(int,'66.72.41.66'.split('.')))
 3 def tran_to_binary(item):
 4     s=''
 5     for i in range(8):
 6         s+=str(item%2)
 7         item=item//2
 8     #print(s)
 9     return s[::-1]
10 s1=''
11 for item in ip:
12     s1+=tran_to_binary(item)
13 sum=0
14 for k,i in enumerate(s1[::-1]):
15     sum+=int(i)*2**k
16 print(sum)
17 ten=int(input())
18 #ten=299867972
19 s=''
20 while ten>0:
21     s+=str(ten%2)
22     ten=ten//2
23 out=[]
24 for j in [s[:8],s[8:16],s[16:24],s[24:]]:
25     sum=0
26 
27     for k,i in enumerate(j):
28         sum+=int(i)*2**k        
29     out.append(sum)
30 print(".".join(list(map(str,out[::-1]))))
 1 ip = list(map(int,input().split('.')))
 2 s=''
 3 for i in ip:   
 4     b='0'*(8-len(str(bin(i)[2:])))+str(bin(i)[2:])
 5     s+=b
 6 print(int(s,2))
 7 
 8 ten=int(input())
 9 a=bin(ten)[2:][::-1]
10 b=[]
11 for i in range(4):
12     b.append(int(a[8*i:8*i+8][::-1],2))
13 print(".".join(list(map(str,b[::-1]))))