IPV 6 / IPV 4大小比較,判斷IPV6/IPV4範圍的開始和結束
阿新 • • 發佈:2018-11-09
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)) 直接呼叫就可以得到一個布林值,通過布林值來新增錯誤提示即可