fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template<typename T>
  6. void printHex(T num)
  7. {
  8. const unsigned int size = sizeof(T);
  9. for(int i = size - 1; i >= 0; --i)
  10. {
  11. printf("%+02X ", (num >> i * 8) & 0xFF);
  12. }
  13. printf("\n\n");
  14. }
  15.  
  16. template<typename T>
  17. T convertToIntN(char* buf)
  18. {
  19. T tmp = 0;
  20. char* ptr = (char*)&tmp;
  21. const size_t size = sizeof(T);
  22. for(int i = 0; i < size; ++i)
  23. {
  24. ptr[size - i - 1] = buf[i];
  25. }
  26.  
  27. return tmp;
  28. }
  29.  
  30. int main() {
  31. /*LSB MSB*/
  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 3096KB
stdin
Standard input is empty
stdout
456454758212
00 00 00 6A 46 D2 DF 44 

-452142947908
FF FF FF 96 BA 2E 21 BC