一个有意思的js算法题
程序员文章站
2022-03-01 17:28:26
...
题目:IP地址和数字之间的转换
给定 IP address: 10.0.3.193
10 --> 00001010
0 --> 00000000
3 --> 00000011
193 --> 11000001
得到
00001010 00000000 00000011 11000001
转换为10进制数为
167773121
同样给定数字167773121,也要得到ip地址10.0.3.193
我写的函数如下:
function numberAndIPaddress(s){
if(s.indexOf(".")>0){
var arr=s.split(".").map(function(value,index){
return padNumber(Number(value).toString(2),8);
});
return ""+parseInt(arr.join(""),2);
}else{
reg=/\d{8}/g
var arr =padNumber(Number(s).toString(2),32).match(reg);
var result=arr.map(function(value){
return parseInt(Number(value),2);
});
return result.join(".");
}
}
function padNumber(num, fill) {
var len = ('' + num).length;
return (Array(
fill > len ? fill - len + 1 || 0 : 0
).join(0) + num);
}
罗列知识点
- 判断是ip地址还是数字
s.indexOf('.')>0
- 数字转化为2进制数
数字.toString(2);
- 数字补齐位数,不足的用字符补齐补齐
function padNumber(num, fill,sep) {
var len = ('' + num).length;
return (Array(
fill > len ? fill - len + 1 || 0 : 0
).join(sep) + num);//不足用参数传的sep填充
}
- 转化成十进制数
parseInt(number,2);//2进制数变十进制
- 字符串按位数切割(数字字符串)
reg=/\d{8}/g;//8位数字进行切割
var arr =s.match(reg);
上一篇: 一个有意思的sql
下一篇: docker的私有仓库
推荐阅读
-
比较搞笑的js陷阱题_javascript技巧
-
初学者,js写的一个俄罗斯方块问题_html/css_WEB-ITnose
-
史上最坑爹的数学题,一个题目难倒13亿人(附答案)
-
在js文件中引入(调用)另一个js文件的三种方法
-
很好用的js日历算法详细代码_javascript技巧
-
一个简单的Node.js异步操作管理器分享_javascript技巧
-
设计一个算法:用不多于3n/2的平均比较次数,在数组A[1,...,n]中找出最大值和最小值的元素
-
设计一个最优算法来查找一n个元素数组中的最大值和最小值
-
js实现div的切换特效上一个下一个_javascript技巧
-
一个高级java架构师用PHP语法回答了一个JS的问题被百度评为专业回答,请问百度专业回答怎么做到的?