Я пытаюсь написать целое число в байтовый буфер. Будет ли следующий код писать всегда в большом формате с обратным порядком байтов, независимо от байтов системы:Правильно ли бит-сдвиг изолирует байты на разных системах?
byte[0] = (uint8_t) (val & 0xFF000000) >> 24;
byte[1] = (uint8_t) (val & 0x00FF0000) >> 16;
byte[2] = (uint8_t) (val & 0x0000FF00) >> 8;
byte[3] = (uint8_t) (val & 0x000000FF);
К сожалению, у меня нет доступа к Htonl() и аналогичные функции.
Нет необходимости маскировать, предполагая, что 'val' не меньше' uint32_t' (и меньше не имеет смысла). – Olaf
FYI, большую часть времени существует '# define' для системной сущности (например,' BIG_ENDIAN', 'LITTLE_ENDIAN'), а также некоторая внутренняя функция' bswap'. – Jason
нет необходимости в маскировке или литье, поскольку массив результатов должен находиться в ячейках 'unit8_t'. –