Ho una lunga lista di indirizzi IP che mostrano alcuni schemi di vicinanza
Esempio:
XX.249.91.16
XX.249.91.21
XX.249.91.32
XX.249.91.160
XX.249.91.165
XX.249.92.15
XX.249.92.25
XX.249.92.51
XX.249.92.234
ea volte un whois rivela un intervallo come questo
XX.163.224.0 - XX.163.239.255
Vorrei creare un elenco di CIDR che mi dà il numero più basso comune
Sembra che Python abbia già una cosa del genere - iprange_to_cidrs - ma ne ho bisogno in JavaScript
XX.249.90.0/16
se è ciò che gestirà
XX.249.91.0 - XX.249.92.255
idem XX.163.200.0 / nn per gestire
XX.163.224.0 - XX.163.239.255
Una calcolatrice che può fare un intervallo alla volta in cui gioco con la maschera è qui link
La mia lingua preferita è JavaScript e ho il seguente avvio ma ho bisogno dell'algoritmo che fa la corrispondenza e la trasformazione
var list = [
[1234,"10.249.91.16"],
[5678,"10.249.91.21"],
[123,"10.249.91.32"],
[456,"10.249.91.160"],
[789,"10.249.91.165"],
[3456,"10.249.92.15"],
[7890,"10.249.92.25"],
[1234,"10.249.92.51"],
[5432,"10.249.92.234"]
]
function dec2bin(ip) {
return ip.split(".").map(function(num) {
return ("00000000"+parseInt(num,10).toString(2)).slice(-8);
}).join(".");
}
$(function() {
$res = $("#res");
$.each(list,function(_,arr) {
$res.append('<br/>'+dec2bin(arr[1])+" - "+arr);
});
});
UPDATE dopo aver esaminato una risposta
function getDec(ip) {
var octet = ip.split(".");
return (octet[0] << 24) | (octet[1] << 16) | (octet[2] << 8) | octet[3];
}
var res = document.getElementById("res");
var adr1 = "111.163.224.0";
var adr2 = "111.163.239.255"
var XOR = getDec(adr1)^getDec(adr2);
// now what?
Aggiornamento 2:
il risultato della gamma 111.163.224.0 - 111.163.239.255 potrebbe essere 111.163.224.0/20
? dato che abbiamo
01101111.10100011.11100000.00000000 - 0,111.163.224.0
01101111.10100011.11101111.11111111 - 0,111.163.239.255