欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JavaScript 16进制转10进制

程序员文章站 2024-03-17 09:40:40
...

JavaScript 16进制转10进制

// 16进制数转10进制
var ex16hex = function(value){
  value = stripscript(value);
    value = value.replace("0x","");
  var arr = value.split("");
  arr = arr.reverse();
  var len = arr.length;
  var res = 0;
  $.each(arr, function(i,v){
      var num = hex_change(v);
    console.log(num)
      res += muti16(num, i);
  });
  return res;
}

// 字符转16进制数字
var hex_change = function(v){
    var res;
    switch(v){
      case "a": res = 10;break;
    case "b": res = 11;break;
    case "c": res = 12;break;
    case "d": res = 13;break;
    case "e": res = 14;break;
    case "f": res = 15;break;
    case "1":
    case "2":
    case "3":
    case "4":
    case "5":
    case "6":
    case "7":
    case "8":
    case "9": res = Number(v);break;
    default: res = 0;break;
  }
  return res;
}

// 过滤所有特殊字符
var stripscript = function(s) {
    var pattern = new RegExp("[`[email protected]#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?↵\r\n]");
        var rs = "";
    for (var i = 0; i < s.length; i++) {
        rs = rs + s.substr(i, 1).replace(pattern, '');
    }
    return rs;
}

// 返回 v 乘以 n 个 16 的积
var muti16 = function(v, n){
  var temp = v;
    for(var i = 0; i < n; i++){
    temp *= 16;
  }
  return temp;
}
var a = "0x1c", b = "1c";
console.log("a = "+ ex16hex(a)); // a = 28
console.log("b = "+ ex16hex(b)); // b = 28

> 个人觉得挺有用的
[转载于](https://my.oschina.net/u/4418910/blog/3769841)