eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPakowanie struktur › Re: Pakowanie struktur
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!go
    blin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt
    -spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
    Date: Thu, 03 Dec 2015 13:09:14 +0100
    From: Tomasz Kaczanowski <kaczus@dowyciecia_poczta.onet.pl>
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.24) Gecko/20100228
    Thunderbird/2.0.0.24 Mnenhy/0.7.6.0
    MIME-Version: 1.0
    Newsgroups: pl.comp.programming
    Subject: Re: Pakowanie struktur
    References: <n3n4m5$grf$1@node1.news.atman.pl>
    <a...@g...com>
    <5...@g...com>
    <f...@g...com>
    In-Reply-To: <f...@g...com>
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    Lines: 41
    Message-ID: <566030e8$0$22825$65785112@news.neostrada.pl>
    Organization: Telekomunikacja Polska
    NNTP-Posting-Host: 79.187.17.90
    X-Trace: 1449144552 unt-rea-a-02.news.neostrada.pl 22825 79.187.17.90:43758
    X-Complaints-To: a...@n...neostrada.pl
    Xref: news-archive.icm.edu.pl pl.comp.programming:208929
    [ ukryj nagłówki ]

    W dniu 2015-12-03 12:55, M.M. pisze:
    > On Thursday, December 3, 2015 at 10:59:27 AM UTC+1, Adam Klobukowski wrote:
    >> W dniu środa, 2 grudnia 2015 18:21:16 UTC+1 użytkownik M.M. napisał:
    >>> On Wednesday, December 2, 2015 at 5:02:15 PM UTC+1, Borneq wrote:
    >>>> Jest jeszcze ilość bitów po dwukropku jak :8, :16 czy :32 - kiedy się
    >>>> stosuje?
    >>> Generalnie wtedy kiedy chcemy oszczędzać pamięć i przechowywać specyficzne
    >>> wartości, np. trzy liczby, każda zajmująca max 10 bitów. Bez tej sztuczki
    >>> potrzeba trzech typów 16-bitowych, czyli razem 48 bitów. Z tą sztuczką 30
    >>> bitów, które kompilator wyrówna do 32 - mamy oszczędność 16 bitów.
    >>> Pozdrawiam
    >>
    >> Nie tylko. To trzeba też robic przy dekodowaniu danych idących strumieniem.
    Przykładowo: mamy system który ma domyslnie 4 bajty na inta i tak rozpisuje struktury
    (pole short int w strukturze i tak bedzie mialo 4 bajty). Teraz, jeśli w takim
    systemie przymiemey strumien danych, gdzie short int jest spakowany na 2 bajty, to po
    zapisaniu takiego strumienia nie możemy go wprost intepretować 'normalna' strukturą,
    ale własnie takie taką spakowaną, lub stosować ine sztuczki. Tego typu problemy
    wystepują np. w implementacjach protokołów sieciowych.
    >
    > Jeśli dekodowanie chcemy zrobić przy pomocy memcpy lub przy pomocy
    > rzutowania wskaźników to owszem. Ale dekodowanie można też zrobić
    > do nieupakowanej struktury:
    >
    > // przepraszam za metakod
    > char buf[2*6] = read();
    > struct X {
    > short a;
    > int b;
    > };
    >
    > X x[2];
    > x[0].a = *((short*)(buf+0));
    > x[0].b = *((int*)(buf+2));
    > x[1].a = *((short*)(buf+6));
    > x[1].b = *((int*)(buf+8));
    >
    > Pozdrawiam

    i gdzieniegdzie będzie mały bum, bo *((int*)(buf+2)); może mieć zdziebko
    inną zawartość, niż nam się wydaje, ale co do tego, że dekodować można
    nie zwracając uwagi na upakowanie to fakt...


    --
    Kaczus
    http://kaczus.ppa.pl

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: