В продолжение.
Таки созрели написать нормальную функцию-конвертер
/*
* swapBytes() - конвертирует порядок байт в буфере
* num - приведенный указатель на число
* n - размер в байтах
*/
int swapBytes(unsigned char * num, size_t n)
{
unsigned char tmp[n];
size_t cnt = n-1;
memcpy(tmp, num, n);
for(cnt=0; cnt
Похожий бред:
#define SWAPWORD(w) ((((w)&0xff)<<8) + (((w)&0xff00)>>8))
#define SWAPLONG(l) ((((l)&0xff)<<24) + (((l)&0xff00)<<8) + (((l)&0xff0000)>>8) +
(((l)&0xff000000)>>24))
Не забудьте, что на байтных операциях надо еще маски переворачивать (сигналы BEn на pci, к примеру), и что некоторые комбинации масок могут быть запрещены (на vme, к примеру, есть запрещенные комбинации масок байт, а на pci — нет). А еще лучше, используйте внутренний конвертор у железа. Не просто так ведь делалось 😉
Это не под то железо )
На контроллерах нету конвертеров, кроме самонаколхозенных.
По поводу #BE как мега-знатоки PCI реально не поняли.