C# 處理資料型別轉換幫助類
阿新 • • 發佈:2019-01-30
using System; using System.Text; namespace DotNet.Utilities { /// <summary> /// 處理資料型別轉換,數制轉換、編碼轉換相關的類 /// </summary> public sealed class ConvertHelper { #region 補足位數 /// <summary> /// 指定字串的固定長度,如果字串小於固定長度, /// 則在字串的前面補足零,可設定的固定長度最大為9位 /// </summary> /// <param name="text">原始字串</param> /// <param name="limitedLength">字串的固定長度</param> public static string RepairZero(string text, int limitedLength) { //補足0的字串 string temp = ""; //補足0 for (int i = 0; i < limitedLength - text.Length; i++) { temp += "0"; } //連線text temp += text; //返回補足0的字串 return temp; } #endregion #region 各進位制數間轉換 /// <summary> /// 實現各進位制數間的轉換。ConvertBase("15",10,16)表示將十進位制數15轉換為16進位制的數。 /// </summary> /// <param name="value">要轉換的值,即原值</param> /// <param name="from">原值的進位制,只能是2,8,10,16四個值。</param> /// <param name="to">要轉換到的目標進位制,只能是2,8,10,16四個值。</param> public static string ConvertBase(string value, int from, int to) { try { int intValue = Convert.ToInt32(value, from); //先轉成10進位制 string result = Convert.ToString(intValue, to); //再轉成目標進位制 if (to == 2) { int resultLength = result.Length; //獲取二進位制的長度 switch (resultLength) { case 7: result = "0" + result; break; case 6: result = "00" + result; break; case 5: result = "000" + result; break; case 4: result = "0000" + result; break; case 3: result = "00000" + result; break; } } return result; } catch { //LogHelper.WriteTraceLog(TraceLogLevel.Error, ex.Message); return "0"; } } #endregion #region 使用指定字符集將string轉換成byte[] /// <summary> /// 使用指定字符集將string轉換成byte[] /// </summary> /// <param name="text">要轉換的字串</param> /// <param name="encoding">字元編碼</param> public static byte[] StringToBytes(string text, Encoding encoding) { return encoding.GetBytes(text); } #endregion #region 使用指定字符集將byte[]轉換成string /// <summary> /// 使用指定字符集將byte[]轉換成string /// </summary> /// <param name="bytes">要轉換的位元組陣列</param> /// <param name="encoding">字元編碼</param> public static string BytesToString(byte[] bytes, Encoding encoding) { return encoding.GetString(bytes); } #endregion #region 將byte[]轉換成int /// <summary> /// 將byte[]轉換成int /// </summary> /// <param name="data">需要轉換成整數的byte陣列</param> public static int BytesToInt32(byte[] data) { //如果傳入的位元組陣列長度小於4,則返回0 if (data.Length < 4) { return 0; } //定義要返回的整數 int num = 0; //如果傳入的位元組陣列長度大於4,需要進行處理 if (data.Length >= 4) { //建立一個臨時緩衝區 byte[] tempBuffer = new byte[4]; //將傳入的位元組陣列的前4個位元組複製到臨時緩衝區 Buffer.BlockCopy(data, 0, tempBuffer, 0, 4); //將臨時緩衝區的值轉換成整數,並賦給num num = BitConverter.ToInt32(tempBuffer, 0); } //返回整數 return num; } #endregion } }