C#下16进制和BCD码转换代码

 
 
[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.         }  
posted @ 2017-03-11 11:16  赵栎安  阅读(3088)  评论(1编辑  收藏  举报