C#下16進位和BCD碼轉碼

來源:互聯網
上載者:User

標籤:rom   byte   data-   highlight   tools   tail   奇數   details   from   

   [csharp] view plain copy 
  1. private static Byte[] ConvertFrom(string strTemp)  
  2.         {  
  3.             try  
  4.             {  
  5.                 if (Convert.ToBoolean(strTemp.Length & 1))//數位二進位碼最後1位是1則為奇數  
  6.                 {  
  7.                     strTemp = "0" + strTemp;//數位為奇數時前面補0  
  8.                 }  
  9.                 Byte[] aryTemp = new Byte[strTemp.Length / 2];  
  10.                 for (int i = 0; i < (strTemp.Length / 2); i++)  
  11.                 {  
  12.                     aryTemp[i] = (Byte)(((strTemp[i * 2] - ‘0‘) << 4) | (strTemp[i * 2 + 1] - ‘0‘));  
  13.                 }  
  14.                 return aryTemp;//高位在前  
  15.             }  
  16.             catch  
  17.             { return null; }  
  18.         }  
  19.         /// <summary>  
  20.         /// BCD碼轉換16進位(壓縮BCD)  
  21.         /// </summary>  
  22.         /// <param name="strTemp"></param>  
  23.         /// <returns></returns>  
  24.         public static Byte[] ConvertFrom(string strTemp, int IntLen)  
  25.         {  
  26.             try  
  27.             {  
  28.                 Byte[] Temp = ConvertFrom(strTemp.Trim());  
  29.                 Byte[] return_Byte = new Byte[IntLen];  
  30.                 if (IntLen != 0)  
  31.                 {  
  32.                     if (Temp.Length < IntLen)  
  33.                     {  
  34.                         for (int i = 0; i < IntLen - Temp.Length; i++)  
  35.                         {  
  36.                             return_Byte[i] = 0x00;  
  37.                         }  
  38.                     }  
  39.                     Array.Copy(Temp, 0, return_Byte, IntLen - Temp.Length, Temp.Length);  
  40.                     return return_Byte;  
  41.                 }  
  42.                 else  
  43.                 {  
  44.                     return Temp;  
  45.                 }  
  46.             }  
  47.             catch  
  48.             { return null; }  
  49.         }  
  50.         /// <summary>  
  51.         /// 16進位轉換BCD(解壓BCD)  
  52.         /// </summary>  
  53.         /// <param name="AData"></param>  
  54.         /// <returns></returns>  
  55.         public static string ConvertTo(Byte[] AData)  
  56.         {  
  57.             try  
  58.             {  
  59.                 StringBuilder sb = new StringBuilder(AData.Length * 2);  
  60.                 foreach (Byte b in AData)  
  61.                 {  
  62.                     sb.Append(b >> 4);  
  63.                     sb.Append(b & 0x0f);  
  64.                 }  
  65.                 return sb.ToString();  
  66.             }  
  67.             catch { return null; }  
  68.         }  

C#下16進位和BCD碼轉碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.