• 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.         }  
  • 相关阅读:
    支持国产共享软件
    Win CE 5.0 增加电池电量显示
    [转]C# 系统应用之鼠标模拟技术及自动操作鼠标
    自己写的 读写 ini 配置文件类
    自己写的 Readini 类
    sizeof与strlen()、递归优化题解
    Git学习资源收集汇总
    好用的Google Chrome插件
    【转】C# Socket编程(5)使用TCP Socket
    【转】C# Socket编程(4)初识Socket和数据流
  • 原文地址:https://www.cnblogs.com/Zhaols/p/6534384.html
Copyright © 2020-2023  润新知