描述: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;
}