84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
求ruby 将ip长度换算成掩码? 比如:41.58.0.0 - 41.58.255.255 65536 将65536 分别换算成255.255.0.0/16
不会ruby ,请帮助谢谢!
认证高级PHP讲师
def mask(ip1, ip2) num = ->(ip) { n=ip.split("."); n[0].to_i()*0x1000000+n[1].to_i()*0x10000+n[2].to_i()*0x100+n[3].to_i() } m=(/(1+)$/.match((num.call(ip1)^num.call(ip2)).to_s(2))[1]) nip = m.to_i(2)^0xFFFFFFFF (nip/0x1000000%0x100).to_s + '.' + (nip/0x10000%0x100).to_s + '.' + (nip/0x100%0x100).to_s + '.' + (nip%0x100).to_s + '/' + m.size.to_s end
Test:
irb(main):001:0> mask("41.58.0.0", "41.58.255.255") => "255.255.0.0/16"
Test: