2017-01-21 13 views
1

Я пытаюсь обрабатывать endianness в кросс-платформенном приложении C++ 11.Являются ли биты значимыми в endianness?

Предположим, я хотел бы преобразовать 64-битное значение от большого знака до маленького знака с четко определенное поведение. Один ресурс предполагает, что я мог бы загрузить версию большого конца в std::bitset и изменить содержимое.

Но это не так, не так ли? Кажется, что Endianness всегда имеет дело с порядком байтов, а не с битовым порядком, но я не могу найти окончательный ресурс, который явно решает вопрос.

+4

удалить из закладок «один ресурс» –

+0

Почему вы хотите конвертировать из одного ордера в другой? Гораздо более распространенный вариант использования - _read_ значение из _big endian byte stream_ в _native_ 'uint64_t'. –

+0

@RolandIllig Это пример использования. Потоковая передача или преобразование, это должно было стать теоретическим вопросом. – Litty

ответ

5

Вы абсолютно правы.

Если предисловие показано значением 0x12345678, то большой аргумент 12 34 56 78, а маленький конец - 78 56 34 12. Реверсирование битов в представлении большого конца не привело бы к представлению маленького конца, только обратное байтов.