JavaScript(节点),27个字节
s=>s.map(Buffer.byteLength)
这将输入作为单个字符的数组,并返回字节计数的数组。
Buffer
是表示原始二进制数据的一种方法。Buffer.byteLength(string)给出字符串中的字节数。UTF-8是默认编码。请注意,只有Node.js具有缓冲区,而浏览器JS没有。大致的浏览器等效项称为Blob,大小为31个字节:
s=>s.map(e=>new Blob([e]).size)
测试
保存此文件并通过node运行它,或在线尝试。
var f =
s=>s.map(Buffer.byteLength)
var tests = [
["!"],
["C","i","a","o"],
["t","ʃ","a","ʊ"],
["A","d","á","m"],
["ĉ","a","ŭ"],
["c","̂","a","u","̆"],
["チ","ャ","オ"],
[],
["!","±","≡","𩸽"]
];
tests.forEach(test => {
console.log(test, f(test));
});
结果应该是:
$ node bytes.js
[ '!' ] [ 1 ]
[ 'C', 'i', 'a', 'o' ] [ 1, 1, 1, 1 ]
[ 't', 'ʃ', 'a', 'ʊ' ] [ 1, 2, 1, 2 ]
[ 'A', 'd', 'á', 'm' ] [ 1, 1, 2, 1 ]
[ 'ĉ', 'a', 'ŭ' ] [ 2, 1, 2 ]
[ 'c', '̂', 'a', 'u', '̆' ] [ 1, 2, 1, 1, 2 ]
[ 'チ', 'ャ', 'オ' ] [ 3, 3, 3 ]
[] []
[ '!', '±', '≡', '�' ] [ 1, 2, 3, 4 ]