字符转换 Unicode,进制转换

Posted 守陵人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符转换 Unicode,进制转换相关的知识,希望对你有一定的参考价值。

  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,进制转换的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中将字符串从十进制代码转换为西里尔文/unicode16?

在python中从十六进制字符转换为Unicode字符

JAVA 十六进制与字符串的转换

字符转换 Unicode,进制转换

将十六进制 unicode 字符转换为其可视化表示

C# 中文和UNICODE字符转换方法