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. }
05-11 19:29