1. 程式人生 > >字符轉換 Unicode,進制轉換

字符轉換 Unicode,進制轉換

http ilo ascii hex substr www 進制 cde 位置

  charCodeAt()方法,此方法返回一個字符的 Unicode 值,該字符位於指定索引位置。

  fromCharCode()方法,此方法將 Unicode 碼轉換為與之對應的字符。

字符轉Unicode碼:  

var str="申曉亮";
str.charCodeAt(0);//30003
str.charCodeAt(1);//26195
str.charCodeAt(2);//20142

Unicode碼轉字符:

String.fromCharCode(73,76,79,86,69,85,30003,26195,20142);//"ILOVEU申曉亮"

js:數字轉2,8,10,16進制

 var number = 18;    //
註意數字格式,不加引號. number.toString(2); //轉成2進制 "10010" number.toString(8);//轉成8進制 "22" number.toString(10);//轉成10進制 "18" number.toString(16);//轉成16進制 "12"

js:16進制轉換2,8,10進制

    var number = 0x11;    //註意數字格式,不加引號.                
    number.toString(2); //轉成2進制   "10001"
    number.toString(8);//
轉成8進制 "21" number.toString(10);//轉成10進制 "17" number.toString(16);//轉成16進制 "11"

 1、字符串轉換為十六進制
  主要使用 charCodeAt()方法,此方法返回一個字符的 Unicode 值,該字符位於指定索引位置。
  

 function stringToHex(str){
     var val="";
     for(var i = 0; i < str.length; i++){
       if(val == "")
         val = str.charCodeAt(i).toString(16);
      else         val += "," + str.charCodeAt(i).toString(16);     }     return val;   }   //調用方法:   var str = "abcde";   str=stringToHex(str);
 

2、十六進制轉換為字符串(不是很明白)
  主要使用 fromCharCode()方法,此方法將 Unicode 碼轉換為與之對應的字符。

function hexToString(str){
    var val="";
    var arr = str.split(","); 
    for(var  i = 0; i < arr.length; i++){
      val += arr[i].fromCharCode(i);
    }
    return val;
  }
  //調用方法:
  var str = "676865";
  stringToHex(str);

3、用 parseInt() 方法轉換

  parseInt(string, radix) 方法只能轉換 String 類型,對其它類型都返回 NaN(非數字)。string 表示待轉換的字符,radix 表示要轉為的進制,值介於 2 ~ 36 之間。

parseInt("bc",16); //表示把字符串bc轉換為16進制,結果:188
parseInt("10",8); //表示把字符串10轉換為8進制,結果:8
parseInt("10",2); //表示把字符串10轉換為2進制,結果:2

 var str = "abcdeghijklmnopqrstuvw";
 console.log(stringToHex(str));//61,62,63,64,65,67,68,69,6a,6b,6c,6d,6e,6f,70,71,72,73,74,75,76,77

  str="http://www.qq.com";
  len=str.length;
  arr=[
  for(var i=0;i<len;i++){
    arr.push(str.charCodeAt(i).toString(16));
  }

  console.log(arr.join(","));//68,74,74,70,3a,2f,2f,77,77,77,2e,71,71,2e,63,6f,6d

==========================================================================

另一種方法,還沒有驗證

//字符串轉16進制

function strToHexCharCode(str) {
  if(str === "")
    return "";
  var hexCharCode = [];
  hexCharCode.push("0x"); 
  for(var i = 0; i < str.length; i++) {
    hexCharCode.push((str.charCodeAt(i)).toString(16));
  }
  return hexCharCode.join("");
}

//16進制轉字符串

function hexCharCodeToStr(hexCharCodeStr) {
  var trimedStr = hexCharCodeStr.trim();
  var rawStr = 
  trimedStr.substr(0,2).toLowerCase() === "0x"
  ? 
  trimedStr.substr(2) 
  : 
  trimedStr;
  var len = rawStr.length;
  if(len % 2 !== 0) {
    alert("Illegal Format ASCII Code!");
    return "";
  }
  var curCharCode;
  var resultStr = [];
  for(var i = 0; i < len;i = i + 2) {
    curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value
    resultStr.push(String.fromCharCode(curCharCode));
  }
  return resultStr.join("");
}

字符轉換 Unicode,進制轉換