關鍵代碼:
using System.Text;namespace YanZhiwei.DotNet2.Utilities.Common{ /// <summary> /// ASCII 幫助類 /// </summary> public static class ASCIIHelper { /* * 知識: * ASCII是基于拉丁字母的一套電腦編碼系統。它主要用于顯示現代英語和其他西歐語言。它是現今最通用的單字節編碼系統,并等同于國際標準ISO/IEC 646。 * 在計算機中,所有的數據在存儲和運算時都要使用二進制數表示(因為計算機用高電平和低電平分別表示1和0),例如,像 * a、b、c、d這樣的52個字母(包括大寫)、以及0、1等數字還有一些常用的符號(例如*、#、@等)在計算機中存儲時也要使用 * 二進制數來表示,而具體用哪些二進制數字表示哪個符號,當然每個人都可以約定自己的一套(這就叫編碼),而大家如果要想 * 互相通信而不造成混亂,那么大家就必須使用相同的編碼規則,于是美國有關的標準化組織就出臺了ASCII編碼,統一規定了上 * 述常用符號用哪些二進制數來表示。 * * ASCII 碼使用指定的7 位或8 位二進制數組合來表示128 或256 種可能的字符。標準ASCII 碼也叫基礎ASCII碼,使用7 位二 * 進制數來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字符。 */ #region 轉換為ASCII碼 /// <summary> /// 轉換為ASCII碼 /// </summary> /// <param name="data">字符</param> /// <returns>ASCII碼</returns> public static int ToASCII(this char data) { ASCIIEncoding _asciiEncoding = new ASCIIEncoding(); char[] _array = new char[1] { data }; return (int)_asciiEncoding.GetBytes(_array)[0]; } /// <summary> /// 將字符串轉換為轉換為ASCII碼 /// </summary> /// <param name="data">字符串</param> /// <returns>byte[]</returns> public static byte[] ToASCII(this string data) { byte[] asciiBytes = null; if (!string.IsNullOrEmpty(data)) asciiBytes = Encoding.ASCII.GetBytes(data); return asciiBytes; } #endregion #region 將ASCII碼轉換為字符 /// <summary> /// 將ASCII碼轉換為字符 /// </summary> /// <param name="asciiCode">SCII碼</param> /// <returns>字符</returns> public static char ToChar(this byte asciiCode) { ASCIIEncoding _asciiEncoding = new ASCIIEncoding(); byte[] _array = new byte[] { asciiCode }; return _asciiEncoding.GetString(_array)[0]; } #endregion }}
單元測試:
using Microsoft.VisualStudio.TestTools.UnitTesting;namespace YanZhiwei.DotNet2.Utilities.Common.Tests{ [TestClass()] public class ASCIIHelperTests { [TestMethod()] public void ToASCIITest() { int _actual = ASCIIHelper.ToASCII('.'); Assert.AreEqual(46, _actual); byte[] _actualArray = ASCIIHelper.ToASCII("Hello"); CollectionAssert.AreEqual(new byte[5] { 72, 101, 108, 108, 111 }, _actualArray); } [TestMethod()] public void ToCharTest() { char _actual = ASCIIHelper.ToChar(46); Assert.AreEqual('.', _actual); } }}
新聞熱點
疑難解答