タグ : 文字エンコーディング

 

.NET 文字列のバイト数を取得する

C#、VB.NETで半角を1バイト、全角を2バイトとして、文字列のバイト数を取得するGetByteCountメソッドを作成しました。
 
StringUtility utility = new StringUtility();

utility.GetByteCount("1あいうえお");
実行結果:11
 
半角を1バイト、全角を2バイトは文字エンコーディングに「シフトJIS」を指定した場合ですが、もちろん他の文字エンコーディングにも対応しております。
 
たとえば全ての文字を2バイトで表すUnicodeを指定した場合は、
 
StringUtility utility = new StringUtility(Encoding.Unicode);

utility.GetByteCount("1あいうえお");
実行結果:12
 
となります。
 
以下のエリアではGetByteCountメソッドを実際に動かした時の挙動を確認できます。
 
StringUtility utility = new StringUtility(
    
Encoding.GetEncoding(
 "));
 
utility.GetByteCount(
 ");
実行結果:
 
 
GetByteCountメソッドのソースコードは以下になります。
 
        /// <summary>
        /// 文字エンコーディング
        /// </summary>
        private Encoding _myEncoding = Encoding.GetEncoding("Shift_JIS");

        /// <summary>
        /// 文字エンコーディング
        /// </summary>
        public Encoding MyEncoding
        {
            get
            {
                return this._myEncoding;
            }
        }

        /// <summary>
        /// コンストラクタ
        /// </summary>
        public StringUtility()
        {
        }

        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="encoding">文字エンコーディング</param>
        public StringUtility(Encoding encoding)
        {
            this._myEncoding = encoding;
        }

        /// <summary>
        /// 文字列のバイト数を取得します
        /// </summary>
        /// <param name="target">対象の文字列</param>
        /// <returns>文字列のバイト数</returns>
        public int GetByteCount(string target)
        {
            return MyEncoding.GetByteCount(target);
        }
 
 
Clipボタンをクリックすると、「StringUtility」というクラスがコピーされます。このソースを「StringUtility.cs」ファイルにコピーするとすぐご利用いただけます。
g h T
 11,501 Total Views