eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPakowanie struktur › Re: Pakowanie struktur
  • X-Received: by 10.140.93.51 with SMTP id c48mr172921qge.0.1449143749066; Thu, 03 Dec
    2015 03:55:49 -0800 (PST)
    X-Received: by 10.140.93.51 with SMTP id c48mr172921qge.0.1449143749066; Thu, 03 Dec
    2015 03:55:49 -0800 (PST)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.glorb.com!
    mv3no10897002igc.0!news-out.google.com!f23ni20899qge.0!nntp.google.com!f78no609
    6575qge.1!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Thu, 3 Dec 2015 03:55:48 -0800 (PST)
    In-Reply-To: <5...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=159.205.154.116;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 159.205.154.116
    References: <n3n4m5$grf$1@node1.news.atman.pl>
    <a...@g...com>
    <5...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <f...@g...com>
    Subject: Re: Pakowanie struktur
    From: "M.M." <m...@g...com>
    Injection-Date: Thu, 03 Dec 2015 11:55:49 +0000
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:208928
    [ ukryj nagłówki ]

    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


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: