2012-01-03 22 views
56

C#のstringのバイト数を知ることができますか?文字列のサイズをバイト単位で知る方法は?

+0

チェックアウト[この回答](http://stackoverflow.com/questions/472906/net-string-to-byte-array-c-sharp )。 – dasblinkenlight

+9

'string'オブジェクトがどれくらいのメモリを占有しているか、またはファイルに書き込まれたときやネットワーク経由で送信されたとき(エンコードされたとき)、文字列の表現が占めるバイト数は全く異なる2つの質問です。 majidgeekはほとんど前者に答え、diyaは後者に答えました(少なくとも2つの一般的なエンコーディングについては)。 –

+0

[どのくらいのバイトがかかりますか?](http://stackoverflow.com/questions/3967411/how-much-bytes-will-take) – nawfal

答えて

88

あなたはSystem.Text.Encodingクラスを使用して、バイト当たりの文字を取得するためにASCIIのようなエンコーディングを使用することができます。

またはMSDNから、この

System.Text.ASCIIEncoding.Unicode.GetByteCount(string); 
    System.Text.ASCIIEncoding.ASCII.GetByteCount(string); 
+10

愚かな質問ですが、文字列のデータが第三者のファイルから来た場合、UnicodeまたはASCIIクラスを使用するかどうかはどのようにわかりますか? –

+5

@MatthewLock UTF16(またはmajidgeekの 'Length * sizeof(Char)'を使用してください。これは、 'Char'がUTF16/2バイトなので同じ結果を与えるはずです)文字列。内部文字配列のバイト数だけではなく、オブジェクト全体に必要な正確なメモリ量が実際に必要な場合は、[より一般的な方法]を検討することもできます(http://stackoverflow.com/questions/1128315/ find-size-of-object-instance-in-c-sharp-in-c-sharp)を使用します。 – Bob

16
System.Text.ASCIIEncoding.Unicode.GetByteCount(yourString); 

それとも

System.Text.ASCIIEncoding.ASCII.GetByteCount(yourString); 
68

を試してみてください。

Stringオブジェクトは、文字列を表すSystem.Charオブジェクトのシーケンシャルコレクションです。

だから、これを使用することができます:

var howManyBytes = yourString.Length * sizeof(Char); 
+0

まで私はデータ構造の基礎を理解することができる限り、それは最も崇高な選択肢です。 – LoneXcoder

+0

と比較することができます長さのメンバーのサイズを考慮に入れることを忘れないでください。 int howManyBytes = yourString.Length * sizeof(Char)+ sizeof(int);これは、 –

+0

文字列の長さがIntより大きい場合はどうなりますか? –

関連する問題