2011-07-26 4 views
0

JavaScriptに文字列がある場合、文字列のバイト数またはビット数を数えるのに最適な方法は何ですか?誰も文字列のバイト数を数える方法を知っていますか?

EcmaScript spec(5.1)はEcmaScriptの文字列要素が16ビット値で構成されており、その言語ではUTF-16文字エンコーディングが使用されていると私は考えています。 (charCodeAt)、2で除算し、結果をフロアし、ボブはあなたの父の兄弟をフロアします。

しかし、各文字をバイナリ(toString(2))に変換すると、ビット数をカウントするために、0と1を数えますか?それとも1だけ?私がオンラインに読んだ(と情報が希薄である)何から

、私はそれはのようなものだと思っています:

Math.floor("A".charCodeAt(0)/2); // 32 bits... No? 
+0

これはかなり混乱しています。 Mバイトの記号のアルファベットの長さNの文字列は、N x Mバイトで表されます。多くのビットの8倍の時間がかかります。 – Patrick87

+0

@shelmanええ、でも、バイナリで0と1を数えますか? 1は「オン」状態を表し、0は「オフ」状態を表すので、1だけである。 – Tom

+1

UTF-16は固定幅エンコードではありません(http://unicode.org/faq/utf_bom.html#utf16-1)。キャラクターは16ビットまたは32ビットを占めるかもしれませんが、通常は16に収まるでしょう。 – Krab

答えて

2

@Charlie So 01000001は単純に8ビットですか?クール。これを の回答に変えることができますので、私は投票することができますか?

正確には、以下を参照してください。

誰かがビットを数えるように頼んだら、0と1の両方を数える必要があります。 「ビット」は情報コンテンツの尺度であることに注意してください。情報コンテンツが16ビットのフィールドがある場合は、2^16の可能な構成があり、そのうちの現在の構成は1つのみです。あなたのビットストリングはそれらのコンフィギュレーションの1つですが、16ビットの他のコンフィギュレーションかどうかを知るにはゼロが必要です。 - Charlie Martin昨日

の良い本を知っていますか?私は独学です(来年のユニになるまで)。 :) - トム昨日

私は、正直に。私はいくつかgoogled、と私はあなたがすでに習得している明確に何か、コンピュータをオンにする方法を教えるものを取得し続けます。試してみてくださいThink like a Computer Scientist

3

あの文字列の各要素は、16ビットの場合、しません文字列のビット数はstring.length * 16かかりますか?

+0

これは文字列によって消費されるメモリの量を表すものですが、これはlocalStorageの領域管理に使用しています。どのくらいの量のデータを保存できるかについてクォータを入れたいので、絶え間なくカウントダウンしていますか? – Tom

関連する問題