utils.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include "stdafx.h"
  2. #include <stdio.h>
  3. #include<string.h>
  4. #include "utils.h"
  5. char Asc2hex(char ch1, char ch2)
  6. {
  7. char ch;
  8. if (ch1 >= 'A')
  9. ch = (char)((ch1 - 0x37) << 4);
  10. else
  11. ch = (char)((ch1 - '0') << 4);
  12. if (ch2 >= 'A')
  13. ch |= ch2 - 0x37;
  14. else
  15. ch |= ch2 - '0';
  16. return ch;
  17. }
  18. int Aschex_2_bcdhex(unsigned char aschex[], int len, unsigned char bcdhex[])
  19. {
  20. int i, j;
  21. if (len % 2 == 0)
  22. j = len / 2;
  23. else
  24. j = len / 2 + 1;
  25. for (i = 0; i < j; i++)
  26. bcdhex[i] = Asc2hex(aschex[2 * i], aschex[2 * i + 1]);
  27. return(j);
  28. }
  29. char Hexlow2asc(int xxc)
  30. {
  31. xxc &= 0x0f;
  32. if (xxc<0x0a)
  33. xxc += '0';
  34. else
  35. xxc += 0x37;
  36. return (char)xxc;
  37. }
  38. char Hexhigh2asc(int xxc)
  39. {
  40. xxc &= 0xf0;
  41. xxc = xxc >> 4;
  42. if (xxc<0x0a)
  43. xxc += '0';
  44. else
  45. xxc += 0x37;
  46. return (char)xxc;
  47. }
  48. int Bcdhex_2_aschex(unsigned char bcdhex[], int len, unsigned char aschex[])
  49. {
  50. int i;
  51. for (i = 0; i<len; i++)
  52. {
  53. aschex[2 * i] = Hexhigh2asc(bcdhex[i]);
  54. aschex[2 * i + 1] = Hexlow2asc(bcdhex[i]);
  55. }
  56. return(len * 2);
  57. }
  58. void printfHEX(unsigned char* strbuf, int length)
  59. {
  60. for (int i = 0; i < length; i++)
  61. {
  62. printf("%02X", strbuf[i]);
  63. }
  64. printf("\n");
  65. }