#include <stdio.h>
#include <stdint.h>
#include <string.h>
uint64_t numberize(const uint8_t from[8]) {
uint64_t r = 0;
uint8_t *p = &r;
#if '01' == 0x4849 // big endian
#else // little endian
for (int i=7; i >= 0; --i)
*p++ = from[i];
#endif
return r;
}
int main() {
const uint8_t data[8] = { 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
printf("result is %016llx\n", numberize
(data
));
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdWludDY0X3QgbnVtYmVyaXplKGNvbnN0IHVpbnQ4X3QgZnJvbVs4XSkgewogICAgdWludDY0X3QgciA9IDA7CiAgICB1aW50OF90ICpwID0gJnI7CgogICAgI2lmICcwMScgPT0gMHg0ODQ5IC8vIGJpZyBlbmRpYW4KICAgICAgICBtZW1jcHkocCwgZnJvbSwgOCk7CiAgICAjZWxzZSAvLyBsaXR0bGUgZW5kaWFuCiAgICAgICAgZm9yIChpbnQgaT03OyBpID49IDA7IC0taSkKICAgICAgICAgICAgKnArKyA9IGZyb21baV07ICAgICAKICAgICNlbmRpZgoKICAgIHJldHVybiByOwp9CgppbnQgbWFpbigpIHsKICAgIGNvbnN0IHVpbnQ4X3QgZGF0YVs4XSA9IHsgMHgwMiwgMHgwMSwgMHgwMiwgMHgwMywgMHgwNCwgMHgwNSwgMHgwNiwgMHgwNyB9OwoKICAgIHByaW50ZigicmVzdWx0IGlzICUwMTZsbHhcbiIsIG51bWJlcml6ZShkYXRhKSk7CgogICAgcmV0dXJuIDA7Cn0=