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