#include <iostream>
#include <cstring>
#include <algorithm>
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;
const unsigned int size = sizeof(T);
reverse(buf, buf + size);
memcpy(&tmp, buf, size);
return tmp;
}
int main() {
/*MSB LSB*/
/* 0 1 2 3 4 5 6 7 */
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIHByaW50SGV4KFQgbnVtKQp7Cgljb25zdCB1bnNpZ25lZCBpbnQgc2l6ZSA9IHNpemVvZihUKTsKCWZvcihpbnQgaSA9IHNpemUgLSAxOyBpID49IDA7IC0taSkKCXsKCQlwcmludGYoIiUrMDJYICIsIChudW0gPj4gaSAqIDgpICYgMHhGRik7Cgl9CglwcmludGYoIlxuXG4iKTsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgVD4KVCBjb252ZXJ0VG9JbnROKGNoYXIqIGJ1ZikKewoJVCB0bXA7Cgljb25zdCB1bnNpZ25lZCBpbnQgc2l6ZSA9IHNpemVvZihUKTsKCXJldmVyc2UoYnVmLCBidWYgKyBzaXplKTsKCW1lbWNweSgmdG1wLCBidWYsIHNpemUpOwoKCXJldHVybiB0bXA7Cn0KCmludCBtYWluKCkgewoJCQkJLypNU0IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExTQiovCgkJCQkvKiAwICAgICAgIDEgICAgICAgMiAgICAgICAzICAgICAgIDQgICAgICAgNSAgICAgICA2ICAgICAgIDcgKi8KCWNoYXIgczFbOF09eydceDAwJywgJ1x4MDAnLCAnXHgwMCcsICdceDZhJywgJ1x4NDYnLCAnXHhkMicsICdceGRmJywgJ1x4NDQnfTsKCWNoYXIgczJbOF09eydceEZGJywgJ1x4RkYnLCAnXHhGRicsICdceDk2JywgJ1x4QkEnLCAnXHgyRScsICdceDIxJywgJ1x4QkMnfTsKCXVpbnQ2NF90IGkxID0gY29udmVydFRvSW50Tjx1aW50NjRfdD4oczEpOwoJaW50NjRfdCBpMiA9IGNvbnZlcnRUb0ludE48aW50NjRfdD4oczIpOwoKCXByaW50ZigiJWxsdVxuIiwgaTEpOwoJcHJpbnRIZXgoaTEpOwoKCXByaW50ZigiJWxsZFxuIiwgaTIpOwoJcHJpbnRIZXgoaTIpOwoJCglyZXR1cm4gMDsKfQ==