fromCharCode()与charCodeAt()在字符与数字相互转换中的应用
source link: https://xushanxiang.com/fromcharcode-charcodeat.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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://xushanxiang.com/';
var num = '110411161116111211151058104710471120111711151104109711101120110510971110110310461099111111091047';
var nStr = str2num(url);
var sNum = num2str(num);
console.log(nStr);
console.log(sNum);
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK