Andrey Kiselev -> debian-russian@lists.debian.org @ Fri, 6 May 2005 08:45:10 +0400:
>> > > Victor Wagner убедил меня, читаю побайтно а затем аккуратно >> > > собираю все целые числа из байтов с помощью сдвигов и сложения. >> > Хмм, а почему сразу не читать в переменные short/long, а байты >> > переставлять только при необходимости? >> Просто разные архитектуры по разному представляют числа в памяти. Т.е >> на одной системе число 0x1234 (short) будет в памяти (а соответственно >> и при чтении) как 2 байта: 0x12 0x34, а на другой: 0x34 0x12 AK> Ну и что? Пишется макрос типа AK> #define SWAP16(x) \ AK> ((short)( \ AK> (((short)(x) & 0x00ffU) << 8) | \ AK> (((short)(x) & 0xff00U) >> 8) )) AK> А потом делается AK> #ifdef HOST_BIGENDIAN AK> # define MSBWORD16(x) (x) AK> # define LSBWORD16(x) SWAP16(x) AK> #else AK> # define LSBWORD16(x) (x) AK> # define MSBWORD16(x) SWAP16(x) AK> #endif AK> а при чтении из файла используются эти макросы. То же для всех AK> остальныъх типов. Ну и чем бы это лучше, чем побайтно? -- Artem Chuprina RFC2822: <ran{}ran.pp.ru> Jabber: [EMAIL PROTECTED] Intel - тоже Сильмарилл. Только сделанный не так... -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]