除了 .charCodeAt(i) 之外,JavaScript 中是否有将字符转换为其代码的技巧?我想以最快的方式将字符串转换为二进制数组(即比 charCodeAt 更快)。但我也有兴趣了解慢速方法。
问问题
1060 次
3 回答
0
你可以做一个查找表,但我怀疑它会更快。就像是:
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;
}
一般来说,如果您可以使用本机代码,请使用本机代码。
于 2013-03-21T10:46:06.020 回答
0
我怀疑你会找到比这段代码更快的东西来完成你想要的:
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()
.
于 2013-03-21T10:38:28.957 回答
0
javascript 中的字符串是 unicode,而不是 ascii,这意味着单个字符的代码可能超过一个字节。
"€".charCodeAt(1) = 8364
这适合两个字节。如果将其转换回二进制,则可以将其解释为一个 2 字节字符或 2 个 1 字节字符。只是没有办法知道。知道 unicode char 的长度很棘手。这可能会帮助您了解为什么这个问题很难解决:http ://www.joelonsoftware.com/articles/Unicode.html
当然,我并不是说你不能将 unicode 字符串转换为二进制,而是说这是你需要解决的任务,而不仅仅是将单个字符转换为字节。
于 2013-03-21T11:03:04.690 回答