fork download
  1. #include <iostream>
  2. #include <cstring>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. template<typename T>
  8. void printHex(T num)
  9. {
  10. const unsigned int size = sizeof(T);
  11. for(int i = size - 1; i >= 0; --i)
  12. {
  13. printf("%+02X ", (num >> i * 8) & 0xFF);
  14. }
  15. printf("\n\n");
  16. }
  17.  
  18. template<typename T>
  19. T convertToIntN(char* buf)
  20. {
  21. T tmp;
  22. const unsigned int size = sizeof(T);
  23. reverse(buf, buf + size);
  24. memcpy(&tmp, buf, size);
  25.  
  26. return tmp;
  27. }
  28.  
  29. int main() {
  30. /*MSB LSB*/
  31. /* 0 1 2 3 4 5 6 7 */
  32. char s1[8]={'\x00', '\x00', '\x00', '\x6a', '\x46', '\xd2', '\xdf', '\x44'};
  33. char s2[8]={'\xFF', '\xFF', '\xFF', '\x96', '\xBA', '\x2E', '\x21', '\xBC'};
  34. uint64_t i1 = convertToIntN<uint64_t>(s1);
  35. int64_t i2 = convertToIntN<int64_t>(s2);
  36.  
  37. printf("%llu\n", i1);
  38. printHex(i1);
  39.  
  40. printf("%lld\n", i2);
  41. printHex(i2);
  42.  
  43. return 0;
  44. }
Success #stdin #stdout 0s 3140KB
stdin
Standard input is empty
stdout
456454758212
00 00 00 6A 46 D2 DF 44 

-452142947908
FF FF FF 96 BA 2E 21 BC