« [Python]NumPyのndarray型(行列)から任意の列のみ抜き出す | トップページ | [C#]文字列を数値に変換できるか否か確認する »

2020年1月 5日 (日)

[C#]文字列の長さをバイト単位で得る

EncodingクラスのGetByteCountクラスを使う。

System.Text.Encoding sjis =
System.Text.Encoding.GetEncoding("shift_jis");
Console.WriteLine("ABC".Length);
Console.WriteLine("あい".Length);
Console.WriteLine("ABあいう".Length);
Console.WriteLine(sjis.GetByteCount("ABC"));
Console.WriteLine(sjis.GetByteCount("あい"));
Console.WriteLine(sjis.GetByteCount("ABあいう"));

出力結果

3
2
5
3
4
8

C#は文字列の文字コードに、すべての文字を2バイトで表現するUnicodeを使っている。一方でMS-DOS時代は、いわゆる半角文字(上記の例では「A」や「B」)は1バイトで、全角文字(上記の例では「あ」や「い」)は2バイトで文字を表現していた。そのため、文字列の文字コードにシフトJIS(shift_jis)を指定して、何バイトか調べれば、文字列の長さをバイト単位で得ることができる。

« [Python]NumPyのndarray型(行列)から任意の列のみ抜き出す | トップページ | [C#]文字列を数値に変換できるか否か確認する »

C#」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [Python]NumPyのndarray型(行列)から任意の列のみ抜き出す | トップページ | [C#]文字列を数値に変換できるか否か確認する »

無料ブログはココログ

■■

■■■