IP 轉換

let ipStr = "128.2.2.2-128.5.67.9";
let STEP = 8, PART_NUM = 4;

// 轉換成二進制
let ips = parseIptoArray(ipStr)
console.log(ips)
console.log(ips[0])
console.log(ips[ips.length-1])

//IP段轉換成IP數組
function parseIptoArray(ipStr) {
    let range = ipStr.split('-').map(v => ipToInt(v))
    return new Array(range[1]-range[0]+1).fill(range[0])
                    .map((v, i) => intToIp(v+i))
}

//將字符串IP轉換成int類型數據
function ipToInt(ip) {
    let res = ip.split('.')
            .map(v => (+v).toString(2).padStart(STEP, 0))
            .reduce((sum, cur) => sum += cur, '')
    return parseInt(res, 2)
}

//將int類型的數據轉換成ip類型字符串
function intToIp(vuale) {
    let binary = vuale.toString(2)
    return new Array(PART_NUM).fill(0)
                        .map((v,i) => parseInt(binary.substring(i*STEP, (i+1)*STEP), 2))
                        .join('.');
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章