1. 程式人生 > >IPV 6 / IPV 4大小比較,判斷IPV6/IPV4範圍的開始和結束

IPV 6 / IPV 4大小比較,判斷IPV6/IPV4範圍的開始和結束

IP 比較大小的目的是為了確認IP 範圍的正確性,前提是必須是同一網段的

原理:舉個IPV 4 的例子:

127.0.0.1 和 128.0.0.2 是不同的兩個網段,不同網段下邊的IP是無法對比大小的,因為互不通訊,互不影響。

只有在同一個網段的兩個 IP 才能比較大小,那麼簡單的來說,在網段相同的情況下,只用判斷最後一部分的大小關係即可

IPV 6 是十進位制的,以" . "隔開,切分為陣列之後,然後在進行比較最後一位即可

IPV 6 是十六進位制的,以" : "隔開,需要先轉換為十進位制的,然後在進行比較

以下是IPV 4判斷範圍始終的程式碼:

var ip1 = "127.0.0.4";
var ip2 = "127.0.0.5";
function trans(ip){
    var arr1 = ip.toUpperCase().split('.');   // 將 IPV4 先用split 切為陣列,
    return parseInt((arr1[arr1.length]-1));  // 找到陣列最後一項,return 出去

    // return parseInt(ip.toUpperCase().split('.')[ip.toUpperCase().split('.').length-1]); 
    // 如果擔心多餘變數的話,可以直接return 出去,二選一,
}
function result(start,end){
    return trans(start) < trans(end); // 傳入開始IP 和 結束 IP ,通過trans 獲得IP了最後一項的一串十進位制的數字
}
console.log(result(ip1,ip2))
直接呼叫就可以得到一個布林值,通過布林值來新增錯誤提示即可
        

以下是IPV 6判斷範圍始終的程式碼:

var ip1 = "fd00:dead:beef:58::9";
var ip2 = "fd00:dead:beef:58::13";
function trans(ip){
    var arr1 = ip.toUpperCase().split(':');   // 將 IPV6 先用split 切為陣列,
    return parseInt((arr1[arr1.length]-1),16);  // 找到陣列最後一項,然後轉化為10進位制的

    // return parseInt(ip.toUpperCase().split(':')[ip.toUpperCase().split(':').length-1],16); 
    // 如果擔心多餘變數的話,可以直接return 出去,二選一,
}
function result(start,end){
    return trans(start) < trans(end); // 傳入開始IP 和 結束 IP ,通過trans 獲得IP了最後一項的一串十進位制的數字
}
console.log(result(ip1,ip2))
直接呼叫就可以得到一個布林值,通過布林值來新增錯誤提示即可