#include <iostream>
using namespace std;
template<typename T>
void printHex(T num)
{
const unsigned int size = sizeof(T);
for(int i = size - 1; i >= 0; --i)
{
printf("%+02X ", (num >> i * 8) & 0xFF);
}
printf("\n\n");
}
template<typename T>
T convertToIntN(char* buf)
{
T tmp = 0;
char* ptr = (char*)&tmp;
const size_t size = sizeof(T);
for(int i = 0; i < size; ++i)
{
ptr[size - i - 1] = buf[i];
}
return tmp;
}
int main() {
/*LSB MSB*/
char s1[8]={'\x00', '\x00', '\x00', '\x6a', '\x46', '\xd2', '\xdf', '\x44'};
char s2[8]={'\xFF', '\xFF', '\xFF', '\x96', '\xBA', '\x2E', '\x21', '\xBC'};
uint64_t i1 = convertToIntN<uint64_t>(s1);
int64_t i2 = convertToIntN<int64_t>(s2);
printf("%llu\n", i1);
printHex(i1);
printf("%lld\n", i2);
printHex(i2);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnZvaWQgcHJpbnRIZXgoVCBudW0pCnsKCWNvbnN0IHVuc2lnbmVkIGludCBzaXplID0gc2l6ZW9mKFQpOwoJZm9yKGludCBpID0gc2l6ZSAtIDE7IGkgPj0gMDsgLS1pKQoJewoJCXByaW50ZigiJSswMlggIiwgKG51bSA+PiBpICogOCkgJiAweEZGKTsKCX0KCXByaW50ZigiXG5cbiIpOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpUIGNvbnZlcnRUb0ludE4oY2hhciogYnVmKQp7CglUIHRtcCA9IDA7CgljaGFyKiBwdHIgPSAoY2hhciopJnRtcDsKCWNvbnN0IHNpemVfdCBzaXplID0gc2l6ZW9mKFQpOwoJZm9yKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKCXsKCQlwdHJbc2l6ZSAtIGkgLSAxXSA9IGJ1ZltpXTsKCX0KCglyZXR1cm4gdG1wOwp9CgppbnQgbWFpbigpIHsKCQkJCS8qTFNCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0IqLwoJY2hhciBzMVs4XT17J1x4MDAnLCAnXHgwMCcsICdceDAwJywgJ1x4NmEnLCAnXHg0NicsICdceGQyJywgJ1x4ZGYnLCAnXHg0NCd9OwoJY2hhciBzMls4XT17J1x4RkYnLCAnXHhGRicsICdceEZGJywgJ1x4OTYnLCAnXHhCQScsICdceDJFJywgJ1x4MjEnLCAnXHhCQyd9OwoJdWludDY0X3QgaTEgPSBjb252ZXJ0VG9JbnROPHVpbnQ2NF90PihzMSk7CglpbnQ2NF90IGkyID0gY29udmVydFRvSW50TjxpbnQ2NF90PihzMik7CgoJcHJpbnRmKCIlbGx1XG4iLCBpMSk7CglwcmludEhleChpMSk7CgoJcHJpbnRmKCIlbGxkXG4iLCBpMik7CglwcmludEhleChpMik7CgkKCXJldHVybiAwOwp9