萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> c# 獲取字符串的字節數

c# 獲取字符串的字節數

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

  class StringOP

  {

  ///

  /// 獲取中英文混排字符串的實際長度(字節數)

  ///

  /// 要獲取長度的字符串

  /// 字符串的實際長度值(字節數)

  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;

copyright © 萬盛學電腦網 all rights reserved