Самый переносимый способ - это сериализация в текстовом формате, чтобы у вас не было проблем с порядком байтов. Вот как работает operator>>
, поэтому у вас не должно быть проблем с порядком байтов при >>
. Основная проблема с двоичными форматами (которая объясняет проблемы с порядком байтов) состоит в том, что числа с плавающей запятой состоят из числа битов мантиссы, числа экспонентных битов и знакового бита. Экспонента может использовать смещение. Это означает, что прямой порядок байтов может быть недостаточным в зависимости от исходного и целевого формата.
Если вы используете IEEE-754 на обеих машинах, то вы можете быть в порядке с прямым обращением байтов, так как этот стандарт определяет формат обмена битовыми строками, который должен быть переносимым (за исключением проблем порядка байтов).
Если вам нужно выполнить преобразование между двумя архитектурами компьютеров и использовать дамп памяти необработанных байтов, тогда, пока базовый числовой формат одинаков (т.е. они имеют одинаковое число битов в каждой части числа), Вы можете прочитать данные в массив unsigned char
, использовать некоторые базовые процедуры замены байтов и битов, чтобы исправить формат хранения, а затем скопировать необработанные байты в переменную соответствующего типа.