converter.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*******************************************************
  2. * File name: converter.c
  3. * Author:Chongguang Li
  4. * Versions:1.0
  5. * Description:This module is to used to covert the data coding.
  6. * History:
  7. * 1.Date:
  8. * Author:
  9. * Modification:
  10. *********************************************************/
  11. #include "converter.h"
  12. /******************************************************************************
  13. * FunctionName : char2bin.
  14. * Description : convert char to bin.
  15. * Parameters : dst --
  16. * hex_str --
  17. * Returns : none.
  18. *******************************************************************************/
  19. static uint8_t FUNCTION_ATTRIBUTE
  20. char2bin(char a)
  21. {
  22. uint8_t n;
  23. if(a>='0'&&a<='9')
  24. {
  25. n=a-'0';
  26. }
  27. else
  28. {
  29. n=a-'a'+10;
  30. }
  31. return n;
  32. }
  33. /******************************************************************************
  34. * FunctionName : hex2bin.
  35. * Description : convert string to bin.
  36. * Parameters : dst --
  37. * hex_str --
  38. * Returns : none.
  39. *******************************************************************************/
  40. void FUNCTION_ATTRIBUTE
  41. hex2bin(uint8_t * dst, char * hex_str)
  42. {
  43. char * p = NULL;
  44. int i=0;
  45. for(p=hex_str; *p; p=p+2)
  46. {
  47. dst[i++] = ((char2bin(*p)) << 4) | (char2bin(*(p+1)));
  48. }
  49. }
  50. const char* FUNCTION_ATTRIBUTE
  51. u32_to_str(unsigned int val)
  52. {
  53. /* Maximum number of decimal digits in u32 is 10 */
  54. static char num_str[11];
  55. int pos = 10;
  56. num_str[10] = 0;
  57. if (val == 0) {
  58. /* If already zero then just return zero */
  59. return "0";
  60. }
  61. while ((val != 0) && (pos > 0)) {
  62. num_str[--pos] = (val % 10) + '0';
  63. val /= 10;
  64. }
  65. return &num_str[pos];
  66. }