[C#] C#下16进制和BCD码转换代码 →→→→→进入此内容的聊天室

来自 , 2019-09-11, 写在 C#, 查看 104 次.
URL http://www.code666.cn/view/2e7ceec8
  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码转换代码"

这儿你可以回复上面这条便签

captcha