[JS]ipv6地址16进制格式转换为二进制表示

描述:ipv6地址16进制格式转换为二进制表示

ipv6地址格式:3001:0000:0000:0000:0000:0000:1111:1111

方案1:

//传入str_16_based:3001:0000:0000:0000:0000:0000:1111:1111
function hex_to_bin(str_16_based) {
    var str_2_based="";
    var str_array = str_16_based.split(":");
    var hex_array = [{key:0,val:"0000"},{key:1,val:"0001"},{key:2,val:"0010"},{key:3,val:"0011"},
                     {key:4,val:"0100"},{key:5,val:"0101"},{key:6,val:"0110"},{key:7,val:"0111"},
                     {key:8,val:"1000"},{key:9,val:"1001"},{key:'a',val:"1010"},{key:'b',val:"1011"},
                     {key:'c',val:"1100"},{key:'d',val:"1101"},{key:'e',val:"1110"},{key:'f',val:"1111"}];

    for(var index = 0; index < str_array.length; index++){
      console.log(str_array[index]);//3001
      var value="";
      for(var i = 0; i < str_array[index].length; i++){
          for(var j = 0; j < hex_array.length; j++){
              if(str_array[index].charAt(i).toLowerCase() == hex_array[j].key){
                  value = value.concat(hex_array[j].val);
                  break;
              }
          }
      }
      console.log("value: " + value);//0011000000000001(16位)
      str_2_based = str_2_based.concat(value);//0011000000000001
      //str_2_based = str_2_based.concat(value,":");//0011000000000001:
    }
    console.log("str_2_based: " + str_2_based);
	//00110000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000100010001000100010001		(128位)
    return str_2_based;
  }

方案2:

//传入str_16_based:3001:0000:0000:0000:0000:0000:1111:1111
function hex_to_bin(str_16_based) {
    var str_2_based="";
    var str_array = str_16_based.split(":");
    for(var index = 0; index < str_array.length; index++){
      console.log(str_array[index]);//3001
      var value="";
      var value = parseInt(str_array[index],16).toString(2).padStart(16,'0');
      //parseInt(str_array[index],16)=>16进制转换为10进制
      //toString(2)=>10进制转换为2进制数
      //padStart(16,'0')=>将转换的二进制数补足至16位(前面补0)
      console.log("value: " + value);//0011000000000001(16位)
      str_2_based = str_2_based.concat(value);//0011000000000001
      //str_2_based = str_2_based.concat(value,":");//0011000000000001:
    }
    console.log("str_2_based: " + str_2_based);
    //00110000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000010001000100010001000100010001		(128位)
    return str_2_based;
  }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值