#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
int main(void)
{
void *ptr = alloca(8);
memcpy(ptr
, (char[]){'9', '8', '7', '6', '5', '4', '3', '2'}, 8 * sizeof(char)); uint64_t* a = ptr;
*a =((*a & 0x0F000F000F000F00)>>8) +
((*a & 0x000F000F000F000F)*10);
*a = 1000000 * ((*a >> 0 ) & 0xFF) +
10000 * ((*a >> 16) & 0xFF) +
100 * ((*a >> 32) & 0xFF) +
((*a >> 48) & 0xFF);
//little-endian only. Можно переделать под big-endian
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KI2luY2x1ZGUgPGludHR5cGVzLmg+CgppbnQgbWFpbih2b2lkKQp7CnZvaWQgKnB0ciA9IGFsbG9jYSg4KTsKbWVtY3B5KHB0ciwgKGNoYXJbXSl7JzknLCAnOCcsICc3JywgJzYnLCAnNScsICc0JywgJzMnLCAnMid9LCA4ICogc2l6ZW9mKGNoYXIpKTsKdWludDY0X3QqIGEgPSBwdHI7CiphID0oKCphICYgMHgwRjAwMEYwMDBGMDAwRjAwKT4+OCkgKwogICAgKCgqYSAmIDB4MDAwRjAwMEYwMDBGMDAwRikqMTApOwoKKmEgPSAxMDAwMDAwICogKCgqYSA+PiAwICkgJiAweEZGKSArCiAgICAgICAxMDAwMCAqICgoKmEgPj4gMTYpICYgMHhGRikgKwogICAgICAgICAxMDAgKiAoKCphID4+IDMyKSAmIDB4RkYpICsKICAgICAgICAgICAgICAgKCgqYSA+PiA0OCkgJiAweEZGKTsKLy9saXR0bGUtZW5kaWFuIG9ubHkuINCc0L7QttC90L4g0L/QtdGA0LXQtNC10LvQsNGC0Ywg0L/QvtC0IGJpZy1lbmRpYW4KcHJpbnRmKCIlIlBSSXU2NCwgKmEpOwoKcmV0dXJuIDA7Cn0=