2年後に私は同じことについて議論している人を見ています。私はまだ何が起こっているのか理解していない。コンピューティング/ JavaScriptの文字列からバイトへの文字列を理解できません
このSOポスト次
String length in bytes in JavaScript
私はジャバスクリプトのこの部分を理解したいです!私はブロックチェーンにプッシュする前にビットクロックトランザクションのkbサイズを計算することにも興味があります。しかし、2人のうちのより重要なことは、私は最終的には、これらのユーザーが何回もやって来るために何をしているのかを理解することです。
回答として概説されている3つの関数を試しましたが、string.lengthを返す以外は何もしませんが、別の値(文字列のオーバーヘッドはバイト/キロバイト/メガバイト)
function byteCount(s) {
return encodeURI(s).split(/%..|./).length - 1;
}
console.log(byteCount('hello'),'hello'.length);//5,5
function getLengthInBytes(str) {
var b = str.match(/[^\x00-\xff]/g);
return (str.length + (!b ? 0: b.length));
}
console.log(getLengthInBytes('hello'),'hello'.length);//5,5
console.log((new TextEncoder('utf-8').encode('hello')).length,'hello'.length);//5,5
これは私にとって意味をなさない!明らかに、これらの人々は、string.length で簡単に入手できるものを手に入れる方法について話しているわけではありません。
代わりに文字列をバイナリにする必要がありますか? (のように:How to convert text to binary code in JavaScript?)
2バイト以上のスペースを取る特殊な文字がいくつかあります。 "Äpfel"を試してみてください。 UTFに関するウィキペディアの記事では、この動作の仕組みについて説明しています。 –
Jup私は答えとして書いています –
JavaScriptは、Unicode 1.1になった標準であり、16ビット(2バイト)のエンコーディングしか許されない標準であるUCS-2を使用します。最近のUnicodeのバージョンでは、実際に文字あたり* 7バイトを使用できます。 https://mathiasbynens.be/notes/javascript-unicode –