String.fromCharCode()
静态 String.fromCharCode() 方法返回由指定的 UTF-16 代码单元序列创建的字符串。
语法
String.fromCharCode(num1[, ...[, numN]])
参数
num1, ..., numN
一系列 UTF-16 代码单元的数字。范围介于 0
到 65535
(0xFFFF
)之间。大于 0xFFFF
的数字将被截断。不进行有效性检查。
返回值
一个长度为 N
的字符串,由 N
个指定的 UTF-16 代码单元组成。
描述
该方法返回一个字符串,而不是一个 String
对象。
由于 fromCharCode()
是 String
的静态方法,所以应该像这样使用:String.fromCharCode()
,而不是作为你创建的 String
对象的方法。
String.prototype.charCodeAt()
charCodeAt() 方法返回 0
到 65535
之间的整数,表示给定索引处的 UTF-16 代码单元。
UTF-16 编码单元匹配能用一个 UTF-16 编码单元表示的 Unicode 码点。如果 Unicode 码点不能用一个 UTF-16 编码单元表示(因为它的值大于0xFFFF
),则所返回的编码单元会是这个码点代理对的第一个编码单元) 。如果你想要整个码点的值,使用 codePointAt() 。
语法
str.charCodeAt(index)
参数
index
一个大于等于 0
,小于字符串长度的整数。如果不是一个数值,则默认为 0
。
返回值
指定 index
处字符的 UTF-16 代码单元值的一个数字;如果 index
超出范围,charCodeAt()
返回 NaN
。
描述
Unicode 码点(code points)的范围从 0
到 1114111
(0x10FFFF)
。开头的 128 个 Unicode 编码单元和 ASCII 字符编码一样。(关于 Unicode 的更多信息,可查看 JavaScript Guide)
【编码】网址转为数字字符串
var str2num = function(str) {
let sArr = str.split('');
let nArr = [];
for (let i = 0; i < sArr.length; i++) {
nArr.push(sArr[i].charCodeAt(0) + 1000);
}
return nArr.join('');
};
【解码】数字字符串转为网址
var num2str = function(num) {
let sArr = [];
for (let j = 4; j <= num.length; j+=4) {
sArr.push(String.fromCharCode(parseInt(num.toString().substr(j-4, 4)) - 1000));
}
return sArr.join('');
};
var url = 'https://www.xushanxiang.com/';
var num = '110411161116111211151058104710471120111711151104109711101120110510971110110310461099111111091047';
var nStr = str2num(url);
var sNum = num2str(num);
console.log(nStr);
console.log(sNum);