hi,欢迎访问本站!
当前位置: 首页学习笔记正文

javascript ip与long整型的互转

用户投稿 学习笔记 33阅读
整型转ip function int2ip(ip_int){ const i = ip_int const iv = (ip)=>(ip>>>24) const result = [0,8,16,24] return result.map(r=>iv(i<<r)).join('.')} ip转整型 function ip2int(ip_str) { const type = Object.prototype.toString.call(ip_str) if (type !== '[object Array]') { ip_str = ip_str.split('.') } if (ip_str.length !== 4) return 0 ip_str = ip_str.map(i => Number(i)) if (ip_str.find(i => i < 0 || i > 255)) return 0 const t = (prev, cur) => prev * Number(1 << 8) + cur return ip_str.reduce(t, Number(0))} ip掩码匹配示例 const ip = ["1.1.1.1","1.1.1.35","1.1.2.15","1.1.5.1","1.9.2.5"].map(i=>ip2int(i))const query = '1.1.1.0/24'function check_same_ip(ip_list, ip_query) { const ip_base = ip_query.split('/') if (ip_base.length <= 0 || ip_base.length > 2) return [] const mask = 32 - (ip_base.length == 1 ? 32 : ip_base[1]) const ip = ip2int(ip_base[0]) >> mask return ip_list.filter(i => i >> mask == ip).map(i=>int2ip(i))}console.log(check_same_ip(ip,query)) // ["1.1.1.1", "1.1.1.35"]
标签:
声明:无特别说明,转载请标明本文来源!
发布评论
正文 取消