платформонезависимая (де-/)сериализация вещественных чисел
От: _hum_ Беларусь  
Дата: 05.01.17 15:53
Оценка:
Есть две программы на разных платформах, сообщающихся друг с другом посредством бинарного файла (одна пишет, другая потом читает). Как на данном этапе развития языка правильнее всего (в рамках стандартного c++ без привлечения библиотек) решается проблема независимой от платформы работы через файл с вещественными данными?
Тут как минимум имеются следующие проблемы:
1) как бороться с разной "endianess";
2) как сериализовать float (ведь могут быть разные стандарты представления вещественных чисел на разных платформах).

Попадающийся при гуглении вариант writing-endian-independent-code-in-c смущает кодом
float FloatSwap( float f )
{
  union
  {
    float f;
    unsigned char b[4];
  } dat1, dat2;

  dat1.f = f;
  dat2.b[0] = dat1.b[3];
  dat2.b[1] = dat1.b[2];
  dat2.b[2] = dat1.b[1];
  dat2.b[3] = dat1.b[0];
  return dat2.f;
}

и тем, что никак не решает проблемы 2).

Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.