-
Data: 2015-12-03 17:56:00
Temat: Re: Pakowanie struktur
Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Thursday, December 3, 2015 at 5:29:03 PM UTC+1, Maciej Sobczak wrote:
> > Jakie triki? W ogóle nie można rozpoznać na podstawie samych
> > danych w jakim formacie są zakodowane.
>
> Przecież nikt nie każe rozpoznawać formatu na podstawie danych. O ile zrozumiałem
nawiązanie do protokołów sieciowych, to format jest zwykle znany z góry.
Jeśli przyszły dane w formacie znanym na podstawie protokołu, to trzeba
napisać konwersję zgodną z danym formatem. Rozmowa, w kontekście znanego
protokołu, zarówno o kopiowaniu bit po bicie, jak i o kopiowaniu z
użyciem operatora konwersji (int), nie ma sensu. Rozmawialiśmy o
szczególikach, typu:
1) można się przejechać na big/lit endian
2) najpierw memcpy, potem operator rzutowania
3) różny padding w strukturach
4) różny rozmiar inta na różnych platformach lub wersjach programu.
> > Rozmawiamy oczywiście o
> > zgodnych formatach.
>
> Co to znaczy zgodnych formatach? Jest jeden format (zwykle znany) i trzeba go
zdekodować na poszczególne pola (albo odwrotnie - spakować ze znanych wartości pól).
Te triki z pragmą, polami bitowymi albo rzutowaniem wskaźników to są złe rozwiązania.
Dlaczego złe? Jeśli ktoś wysyła tablicę struktur wyrównanych do 1 bajta, to
sytuacja ma się odwrotnie niż pisałeś: Jedynie przez przypadek odczyt
zadziała na strukturach wyrównanych do 4 bajtów. Dlatego są złe, że nie
używa się przenośnych funkcji do wysłania i odebrania każdego pola? Owszem
to drobna wada. Ale wyobraź sobie, że ktoś pisze program tylko na windows i
tylko na x86, ma strutkurę z 20ma polami i zamiast napisać
write( &strukt , sizeof(strukt) , file )
pisze 20 razy:
write( unwersalny_format_int( strukt.pole1 ) , uniwersalny_rozmiar_int( strukt.pole1
) , file );
Zgodzę się, że kod z memcpy jest ryzykowny, ale po pierwsze ryzyko to pojawia
się tylko w określonych sytuacjach, a aktywne unikanie tego ryzyka zajmuje
czas. Zobacz jak łatwo rypnąć się po poprawce pól w strukturze.
Pozdrawiam
Następne wpisy z tego wątku
- 03.12.15 18:02 M.M.
- 03.12.15 18:15 M.M.
- 03.12.15 18:37 witek
- 03.12.15 18:40 witek
- 03.12.15 18:57 M.M.
- 04.12.15 09:43 Tomasz Kaczanowski
- 04.12.15 14:18 Maciej Sobczak
- 04.12.15 21:26 M.M.
- 07.12.15 10:14 Tomasz Kaczanowski
- 07.12.15 12:02 M.M.
- 07.12.15 15:12 Maciej Sobczak
- 07.12.15 15:40 M.M.
- 07.12.15 16:22 witek
- 07.12.15 17:05 M.M.
- 07.12.15 18:40 witek
Najnowsze wątki z tej grupy
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
Najnowsze wątki
- 2025-10-19 Superkondensator. Czy to się uda?
- 2025-10-19 HYUANDAI NIE POJEDZIE DALEJ! Potrzebuje PILNIE POMOCY!
- 2025-10-18 BLIK a Sprawa Polska
- 2025-10-18 UE i woda pitna do chłodzenia
- 2025-10-18 Zakrzewo => Konsultant SAP HCM <=
- 2025-10-17 "Przypadkowo wylosowany" sędzia odmówił ekstradycji Niemcom za NordStream
- 2025-10-17 Stare filmy o technice
- 2025-10-17 Warszawa => Starszy Konsultant SAP - obszar PP <=
- 2025-10-17 Warszawa => Java Full Stack Developer <=
- 2025-10-17 Warszawa => Konsultant Wiodący SAP PP <=
- 2025-10-17 Warszawa => Key Account Manager (Usługi HR) <=
- 2025-10-17 Ostrów Wielkopolski => Specjalista ds. Marketingu Online (PPC) <=
- 2025-10-17 Gdańsk => Konsultant ds. Wdrożeń ERP (moduł FK) <=
- 2025-10-17 Lublin => Programista Delphi <=
- 2025-10-16 Warszawa => Senior Algorithm Developer (Java/Kotlin) <=