3

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

 2 years ago
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 代码单元序列创建的字符串。

完整的 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('');
};
JavaScript

【解码】数字字符串转为网址

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('');
};
JavaScript
var url = 'https://xushanxiang.com/';
var num = '110411161116111211151058104710471120111711151104109711101120110510971110110310461099111111091047';

var nStr = str2num(url);
var sNum = num2str(num);

console.log(nStr);
console.log(sNum);

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK