двоичные данные при передаче данных по системам - PullRequest
0 голосов
/ 26 января 2019

Эта цитата взята из CERT FIO09-C

Переносимость проблемы при использовании функций fread () и fwrite () в нескольких гетерогенных системах.В частности, никогда не гарантируется, что чтение или запись скалярных типов данных, таких как целые числа, не говоря уже о агрегатных типах, таких как массивы или структуры, сохранят представление или значение данных.Реализации могут отличаться заполнением структуры, моделью с плавающей запятой, числом бит на байт, порядком байтов и другими атрибутами, которые приводят к несовместимости форматов двоичных данных.

...

Чтение двоичных данныхформат которого отличается от ожидаемого, может привести к непредвиденному поведению программы.

CERT FIO09-C

Из книги Пирсона С, которую я читаю:

Хотя данные чтения и записи fread и fwrite, такие как целые числа, в формате фиксированного размера, а не в формате переменного размера, обрабатываемые ими данные обрабатываются в компьютерном формате «необработанных данных» (т. Е. Байты данных).), а не в удобочитаемом текстовом формате printf и scanf.Поскольку «необработанное» представление данных зависит от системы, «необработанные данные» могут быть недоступны для чтения в других системах, а также в программах, созданных другими компиляторами или с другими параметрами компилятора.

Для более переносимых представлений файлов рассмотритеиспользуя текстовые файлы или библиотеку функций, которые могут обрабатывать различия в представлениях двоичных файлов на разных платформах.

Я ищу в Интернете, но не могу найти библиотеки C, упомянутые в этой книге.Я пробовал много разных ключевых слов, но ничего не появляется.Не знаю, имел ли он в виду, что я должен написать свою собственную библиотеку, или там есть библиотеки.

Кто-нибудь знает какую-либо библиотеку C, которая может обрабатывать передачу двоичных данных по системам, таким как файлы, написанные с помощью fwrite?

...