Binarne prymitywy serializacji przenośnych C.

O ile wiem, biblioteka C nie pomaga w serializowaniu wartości liczbowych w strumieniu bajtów innych niż tekst. Popraw mnie, jeśli się mylę.

Najbardziej standardowym narzędziem w użyciu jesthtonl i wsp. z POSIX. Funkcje te mają wady:

Nie ma obsługi 64-bitowej.Nie ma obsługi zmiennoprzecinkowej.Nie ma wersji dla typów podpisanych. Podczas deserializacji, konwersja bez podpisu do podpisu opiera się na podpisanym integralnym przepełnieniu, jakim jest UB.Ich nazwy nie określają rozmiaru typu danych.Zależą od 8-bitowych bajtów i obecności uint-size dokładnego rozmiaruN_t.Typy wejściowe są takie same jak typy wyjściowe, zamiast odwoływać się do strumienia bajtów.Wymaga to od użytkownika wykonania rzutowania na typ wskaźnika, który może być niebezpieczny w wyrównaniu.Po wykonaniu tego przeszukiwania, użytkownik prawdopodobnie spróbuje przekonwertować i wygenerować strukturę w swoim układzie natywnej pamięci, co jest kiepską praktyką, która powoduje nieoczekiwane błędy.

Interfejs do serializacji dowolnego rozmiaruchar do 8-bitowych standardowych bajtów wchodzi się między standardem C, który w rzeczywistości nie uznaje 8-bitowych bajtów, a jakiekolwiek standardy (ITU?) ustawiają oktet jako podstawową jednostkę transmisji. Ale starsze standardy nie są poprawiane.

Teraz, gdy C11 ma wiele opcjonalnych komponentów, można dodać binarne rozszerzenie serializacji obok rzeczy takich jak wątki, bez wymagania istniejących implementacji.

Czy takie rozszerzenie byłoby użyteczne, czy niepokojące jest to, że maszyny inne niż dwa uzupełniające są po prostu bezcelowe?

questionAnswers(3)

yourAnswerToTheQuestion