JavaScript:将字符转换为代码,或将字符串转换为二进制数组(数字数组)的非标准方法

JavaScript: Non-standard ways to convert characters to codes, or strings to binary arrays (arrays of numbers)

本文关键字:数组 转换 数字 方法 非标准 字符 代码 字符串 JavaScript 二进制      更新时间:2023-09-26

是否有一个技巧在JavaScript转换字符到它的代码,除了。charcodeat (i)?我想以最快的方式将字符串转换为二进制数组(即比charCodeAt更快)。但是我也有兴趣了解慢方法

您可以做一个查找表,但我怀疑它是否会更快。比如:

function(str){
    var codes = {},
        output = [];
    for (var i=0; i<256; i++){
        String.codes[fromCharCode(i)] = i;
    }
    for (var i=0; i<str.length; i++){
        output.push(codes[str[i]]);
    }
     return output;
}

一般来说,如果你可以使用本地代码,那就使用本地代码。

我怀疑你会找到比这段代码更快的东西来完成你想要的:

function getCharArray(str)
{
    var chars = [];
    for (var i = 0, n = str.length; i != n; ++i) {
        chars.push(str.charCodeAt(i));
    }
    return chars;
}

你必须这样做,因为JavaScript对单个字符没有单独的类型;即使单个字符仍然是字符串,因此您需要String.charCodeAt() .

javascript中的字符串是unicode,而不是ascii,这意味着单个字符的代码可能大于一个字节。

"€".charCodeAt(1) = 8364

两个字节。如果将其转换回二进制,则可以将其解释为1个2字节字符或2个1字节字符。只是没有办法知道。知道unicode字符的长度是很棘手的。下面的内容可以帮助您了解为什么这个问题很难解决:http://www.joelonsoftware.com/articles/Unicode.html

当然,我不是说你不能将unicode字符串转换为二进制,我是说这是你需要解决的任务,而不仅仅是将单个字符转换为字节。