fork download
  1. #include <iostream>
  2.  
  3. uint8_t hexCharToNumber( char c )
  4. {
  5. uint8_t number = UINT8_MAX;
  6.  
  7. if ( c >= '0' && c <= '9' ) number = c - '0';
  8. else if ( c >= 'a' && c <= 'f' ) number = c - 'a' + 10;
  9. else if ( c >= 'A' && c <= 'F' ) number = c - 'A' + 10;
  10.  
  11. return number;
  12. }
  13.  
  14. int main()
  15. {
  16. const char * s = "65D0F7758B094114AFA6D33A5EA0716A";
  17. const char * p = s;
  18.  
  19. uint8_t array[16];
  20. uint8_t index = 0;
  21. bool error = false;
  22.  
  23. while ( *p != '\0' )
  24. {
  25. char c1 = *p++;
  26. char c2 = *p++;
  27.  
  28. if ( c2 == '\0' || index == 16 )
  29. {
  30. error = true;
  31. break;
  32. }
  33.  
  34. array[ index++ ] = ( hexCharToNumber( c1 ) << 4 ) | hexCharToNumber( c2 );
  35. }
  36.  
  37. if ( error == true || index < 16 )
  38. {
  39. printf( "error\n" );
  40. }
  41. else
  42. {
  43. for (uint8_t i = 0; i < index; ++i )
  44. {
  45. printf( "%02X\n", array[i] );
  46. }
  47. }
  48.  
  49. return 0;
  50. }
Success #stdin #stdout 0.01s 5444KB
stdin
Standard input is empty
stdout
65
D0
F7
75
8B
09
41
14
AF
A6
D3
3A
5E
A0
71
6A