c# 獲取字符串的字節數


將字符串轉換為ASCII編碼數組,只要是中文字節碼就是ASCII編碼63即"?",所以可以由此來進行判斷

     class StringOP
    {
         ///   <summary>
        
///  獲取中英文混排字符串的實際長度(字節數)
        
///   </summary>
        
///   <param name="str"> 要獲取長度的字符串 </param>
        
///   <returns> 字符串的實際長度值(字節數) </returns>
         public  int getStringLength( string str)
        {
             if (str.Equals( string.Empty))
                 return  0;
             int strlen =  0;
            ASCIIEncoding strData =  new ASCIIEncoding();
             // 將字符串轉換為ASCII編碼的字節數字
             byte[] strBytes = strData.GetBytes(str); 
             for ( int i =  0; i <= strBytes.Length -  1; i++)
            {
                 if (strBytes[i] ==  63)   // 中文都將編碼為ASCII編碼63,即"?"號
                    strlen++;
                strlen++;
            }
             return strlen;
        }
    }
 
     class TestMain
    {
         static  void Main()
        {
            StringOP sop =  new StringOP();
             string str =  " I Love China!I Love 北京! ";
             int iLen = sop.getStringLength(str);
            Console.WriteLine( " 字符串 " + str +  " 的字節數為: " + iLen.ToString());
            Console.ReadKey();
        }
    }

 

 將字符串以Unicode的編碼轉換為字節數組,判斷每個字符的第二個字節是否大於0,來計算字符串的字節數

        public  static  int bytelenght( string str)
        {
             // 使用Unicode編碼的方式將字符串轉換為字節數組,它將所有字符串(包括英文中文)全部以2個字節存儲
             byte[] bytestr = System.Text.Encoding.Unicode.GetBytes(str);
             int j =  0;
             for ( int i =  0; i < bytestr.GetLength( 0); i++)
            {
                 // 取余2是因為字節數組中所有的雙數下標的元素都是unicode字符的第一個字節
                 if (i %  2 ==  0)
                {
                    j++;
                }
                 else
                {
                     // 單數下標都是字符的第2個字節,如果一個字符第2個字節為0,則代表該Unicode字符是英文字符,否則為中文字符
                     if (bytestr[i] >  0
                    {
                        j++;
                    }
                }
            }
             return j;
        }

 

 直接轉成字節碼獲取長度:

byte[] sarr = System.Text.Encoding.Default.GetBytes(s);   
  int len = sarr.Length;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM