|
.NET TIPS 文字列のバイト数を取得するには?デジタルアドバンテージ2003/04/11 |
![]() |
|
|
|
TIPS:文字列の長さを取得するには?では、文字列のLengthプロパティにより文字数を取得したが、ファイルやデータベースあるいはネットワークに対して文字列を出力する場面などでは、文字列の文字数ではなく、文字列全体が占める実際のバイト数が必要となる場合がある。
このような場合、TIPS:文字列をシフトJISとしてバイト列に変換するには?にあるように文字列をバイト列に変換してから、そのbyte型配列の長さを取得しても文字列のバイト数を取得できるが、EncodingクラスのGetByteCountメソッドを使用すれば、より簡単に取得することができる。
文字列のバイト数を取得する場合、そのエンコーディング(文字コード体系)によって得られるバイト数は異なってくる。ここでは文字列をシフトJIS文字の並びとして扱う場合について解説する。つまり、Unicode文字列をシフトJIS文字列として解釈し、そのバイト数を取得する。
まず、シフトJISをサポートしているEncodingオブジェクトを取得する。
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
EncodingクラスとGetEncodingメソッドについては、冒頭に挙げたTIPS:文字列をシフトJISとしてバイト列に変換するには?で解説している。
次に、パラメータでカウントする文字列を指定してGetByteCountメソッドを呼び出せば、その文字列のバイト数を取得できる。
string str = "こんにちわ";
int num = sjisEnc.GetByteCount(str);
次のサンプル・プログラムでは、このようにして取得した文字列のバイト数と、文字列のLengthプロパティにより取得した文字数をそれぞれ表示する。
|
|
| 文字列のバイト数と文字数を表示するC#のサンプル・プログラム(strcount.cs) | |
シフトJISでは全角文字は2byteとなるため、文字列のバイト数とLengthプロパティで得た文字数が異なっているのが分かる。
文字のエンコーディングとしてシフトJIS以外を扱う場合には、TIPS:Encodingクラスで扱えるエンコーディング名は?を参考にしていただきたい。![]()
| カテゴリ:クラス・ライブラリ 処理対象:文字列 使用ライブラリ:Encodingクラス(System.Text名前空間) 関連TIPS:文字列の長さを取得するには? 関連TIPS:文字列をシフトJISとしてバイト列に変換するには? 関連TIPS:Encodingクラスで扱えるエンコーディング名は? |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


