fromCharCode()与charCodeAt()在字符与数字相互转换中的应用

String.fromCharCode()

静态 String.fromCharCode() 方法返回由指定的 UTF-16 代码单元序列创建的字符串。

完整的 UTF 16 表格

语法

String.fromCharCode(num1[, ...[, numN]])

参数

num1, ..., numN一系列 UTF-16 代码单元的数字。范围介于 0 到 655350xFFFF)之间。大于 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);

已发布

分类

来自

标签: