Maybe not the shortest way, but should work:
__int64 test;
char buf[128];
const char dt[] = "0x01c5556a92792c8c";
memset(buf, 0, sizeof(buf));
for(int i=0;i<8;i++)
{
int n = strlen(dt) - ((i+1)*2);
sprintf(&buf[i*2], "%c%c", dt[n], dt[n+1]);
}
sscanf(buf, "%16I64x", &test);
Kuniva --------------------------------------------