當(dāng)前位置:首頁>>開發(fā)編程>>VS.NET>>新聞內(nèi)容
用.NET獲取漢字的區(qū)位碼(c#)
作者:yolle 發(fā)布時(shí)間:2004-8-18 12:57:02 文章來源:CSDN

  首先復(fù)習(xí)一下計(jì)算機(jī)基礎(chǔ)知識:

  計(jì)算機(jī)中最底層的數(shù)據(jù)都是用二進(jìn)制及0和1來表示的。每個(gè)0或1稱作1位,第8位二進(jìn)制數(shù)叫做1個(gè)字節(jié),它可以表示ASCII碼中的一個(gè)字符。中文計(jì)算機(jī)中用兩個(gè)字節(jié)即16位二進(jìn)制來表示一個(gè)漢字。而在Unicode編碼中所有的符號(包括漢字,英文,標(biāo)題及其它眾多符號)都是為兩字節(jié)(16)位來表示。

  在System.Text命名空間中包含眾多編碼的類,可供進(jìn)行操作及轉(zhuǎn)換,下面用兩個(gè)實(shí)例來進(jìn)行區(qū)位碼及漢字之間的互換,希望能起到舉一反三的效果,讓大家可以輕松處理文字編碼方面的問題:


  using System;
  using System.Text;
  class CodingChange
  {
  public string CharacterToCoding(string character)
  {
  string coding = "";
  for (int i = 0; i<character.Length; i++ )
  {
  byte[] bytes = System.Text.Encoding.Unicode.GetBytes(character.Substring(i,1)); //取出二進(jìn)制編碼內(nèi)容
  string lowCode = System.Convert.ToString(bytes[0], 16); //取出低字節(jié)編碼內(nèi)容(兩位16進(jìn)制)
  if (lowCode.Length == 1)
  lowCode = "0" + lowCode;
  string hightCode = System.Convert.ToString(bytes[1], 16);//取出高字節(jié)編碼內(nèi)容(兩位16進(jìn)制)
  if (hightCode.Length == 1)
  hightCode = "0" + hightCode;
  coding += (lowCode + hightCode);//加入到字符串中,
  }
  return coding;
  }
  public string CodingToCharacter(string coding)
  {
  string characters = "";
if (coding.Length % 4 != 0)//編碼為16進(jìn)制,必須為4的倍數(shù)。
  {
  throw new System.Exception("編碼格式不正確");
  }
  for (int i = 0; i<coding.Length; i+=4 ) //每四位為一個(gè)漢字
  {
  byte[] bytes = new byte[2];
  string lowCode = coding.Substring(i, 2); //取出低字節(jié),并以16進(jìn)制進(jìn)制轉(zhuǎn)換
  bytes[0] = System.Convert.ToByte(lowCode, 16);
  string highCode = coding.Substring(i + 2, 2); //取出高字節(jié),并以16進(jìn)制進(jìn)行轉(zhuǎn)換
  bytes[1] = System.Convert.ToByte(highCode, 16);
  string character = System.Text.Encoding.Unicode.GetString(bytes);
  characters += character;
  }
  return characters;
  }
  public static void Main()
  {
  CodingChange code = new CodingChange();
  string coding = code.CharacterToCoding("我們的大中國,是好在的一個(gè)家.");
  Console.WriteLine(coding);
  Console.WriteLine(code.CodingToCharacter(coding));
  }
  };

最后輸出的結(jié)果是:

  C:\>test
  1162ec4e847627592d4efd560cff2f667d5928578476004e2a4eb65b2e00
  我們的大中國,是好在的一個(gè)家.

  C:\>


最新更新
·C#中使用Split分隔字符串的技
·VS2008開發(fā)中Windows Mobile
·PC機(jī)和移動(dòng)設(shè)備上絕對路徑的
·C#程序加殼的方法(使用Sixx
·當(dāng)前上下文中不存在名稱Conf
·請插入磁盤:Visual Studio 2
·用VS.NET讀取Flash格式文件信
·在ASP.NET中使用AJAX的簡單方
·VS.NET 2005中常用的一些代碼
·安裝VS.NET 2005 SP1補(bǔ)丁全攻
相關(guān)信息
·C#中使用Split分隔字符串的技巧
·PC機(jī)和移動(dòng)設(shè)備上絕對路徑的獲取(C#)
·C#程序加殼的方法(使用Sixxpack)
·當(dāng)前上下文中不存在名稱ConfigurationManager的解決方法
·C#的支付寶Payto接口代碼
·C#實(shí)現(xiàn)窗口最小化到系統(tǒng)托盤
·解密QQ的MsgEx.db消息文件格式
·QQ的TEA填充算法C#實(shí)現(xiàn)
·C#用Guid獲取不規(guī)則的唯一值(標(biāo)識)
·基于Windows Mobile 5.0的掌上天氣預(yù)報(bào)設(shè)計(jì)
畫心
愚愛
偏愛
火苗
白狐
畫沙
犯錯(cuò)
歌曲
傳奇
稻香
小酒窩
獅子座
小情歌
全是愛
棉花糖
海豚音
我相信
甩蔥歌
這叫愛
shero
走天涯
琉璃月
Nobody
我愛他
套馬桿
愛是你我
最后一次
少女時(shí)代
灰色頭像
斷橋殘雪
美了美了
狼的誘惑
我很快樂
星月神話
心痛2009
愛丫愛丫
半城煙沙
旗開得勝
郎的誘惑
愛情買賣
2010等你來
我叫小沈陽
i miss you
姑娘我愛你
我們都一樣
其實(shí)很寂寞
我愛雨夜花
變心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK繃
貝多芬的悲傷
哥只是個(gè)傳說
丟了幸福的豬
找個(gè)人來愛我
要嫁就嫁灰太狼
如果這就是愛情
我們沒有在一起
寂寞在唱什么歌
斯琴高麗的傷心
別在我離開之前離開
不是因?yàn)榧拍畔肽?/a>
愛上你等于愛上了錯(cuò)
在心里從此永遠(yuǎn)有個(gè)你
一個(gè)人的寂寞兩個(gè)人的錯(cuò)