Переносимые двоичные примитивы сериализации

Насколько я знаю, библиотека C не помогает в сериализации числовых значений в нетекстовый поток байтов. Поправь меня, если я ошибаюсь.

Самый стандартный используемый инструментhtonl и др. из POSIX. Эти функции имеют недостатки:

There is no 64-bit support. There is no floating-point support. There are no versions for signed types. When deserializing, the unsigned-to-signed conversion relies on signed integral overflow which is UB. Their names do not state the size of the datatype. They depend on 8-bit bytes and the presence of exact-size uint_N_t. The input types are the same as the output types, instead of referring to a byte stream. This requires the user to perform a pointer typecast which is possibly unsafe in alignment. Having performed that typecast, the user is likely to attempt to convert and output a structure in its native memory layout, a poor practice which results in unexpected errors.

Интерфейс для сериализации произвольного размераchar 8-битные стандартные байты попадают между стандартом C, который действительно не признает 8-битные байты, и любые стандарты (ITU?) устанавливают октет в качестве основной единицы передачи. Но старые стандарты не пересматриваются.

Теперь, когда C11 имеет много дополнительных компонентов, можно добавить двоичное расширение сериализации наряду с такими вещами, как потоки, не предъявляя требований к существующим реализациям.

Будет ли такое расширение полезным или беспокоиться о машинах, не являющихся двумя дополнительными, просто бессмысленно?

Ответы на вопрос(3)

Ваш ответ на вопрос