собственно: void *p = 0; // p указатель на неизвестный тип данных // p нулевой указатель - не разыменовывать char *c; // c указатель на один байт c = (char *)p;
#define SWAPWORD(x) MAKEWORD(HIBYTE(x), LOBYTE(x)) #define SWAPLONG(x) MAKELONG(SWAPWORD(HIWORD(x)), SWAPWORD(LOWORD(x))) (MAKEWORD, MAKELONG, HIWORD, LOWORD, HIBYTE и LOBYTE объявлены в minwindef.h). Или можно просто взять указатель на твой LONG, привести к char* и отправить в std::reverse (algorithm.h): std::reverse((char*)&myLong, (char*)&myLong + 4);
Учись. (если я правильно понял что нужно, ибо у меня не гуглятся эти макросы) union MYLONG{ MYLONG( long L ):l(L){} long l; unsigned char ch[ 4 ]; void swap(){ unsigned char tmp1 = ch[3]; unsigned char tmp2 = ch[2]; ch[3] = ch[0]; ch[2] = ch[1]; ch[1] = tmp2; ch[0] = tmp1; } }; MYLONG l = 0x99DEAD11; l.swap();