• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Kodowanie Huffmana w C++ - czy aby na pewno kompresja?

0 głosów
224 wizyt
pytanie zadane 13 września 2017 w C i C++ przez John Doe Obywatel (1,680 p.)
zamknięte 13 września 2017 przez John Doe

Obrazek reprezentujący proces.

Rozumiem koncept związany z kodowaniem huffmana; chciałbym w wolnych chwilach zaimplementować kompresor bazujący na tym algorytmie. 

Ale czy pracując w C++ jest to możliwe?

Jak, mając już gotową tablicę z kodami, skorzystać z tych kodów? Jak skompresować plik?

Niestety, takie tworzenie nowego łańcucha znaków (8 punkt na obrazku), to nie kompresja a prezentacja idei - bo i tak kończymy z znakami, z których każdy zajmuje po 8 bitów (w ASCII, '0' odpowiada 00000000, a '1' 00000001).

komentarz zamknięcia: Uzyskałem odpowiedź (jako komentarz).
komentarz 13 września 2017 przez adrian17 VIP (137,020 p.)

Niestety, takie tworzenie nowego łańcucha znaków (8 punkt na obrazku), to nie kompresja a prezentacja idei - bo i tak kończymy z znakami, z których każdy zajmuje po 8 bitów

Bo to nie znaki (te cudzysłowy są mylące, fakt), tylko bity.

W ósmym kroku znajduje się 115 bitów. Oryginalny tekst ma 46 znaków*8bitów == 368 bitów.

(w ASCII, '0' odpowiada 00000000, a '1' 00000001).

Nie, '0' w ASCII to 48, czyli 0b00110000.

komentarz 13 września 2017 przez John Doe Obywatel (1,680 p.)

Nie, '0' w ASCII to 48, czyli 0b00110000

Najwyraźniej nie potrafię odczytać prostej tabelki :)

Bo to nie znaki (te cudzysłowy są mylące, fakt), tylko bity.

Oczywiście. Tylko jak pracować na bitach w C++? Jak stworzyć blok danych o rozmiarze 118 bitów?

1
komentarz 13 września 2017 przez adrian17 VIP (137,020 p.)
Tablica 15-bajtowa ma 120 bitów. Robisz taką i do niej pakujesz bity. Do tego są zwykłe operacje bitowe (&, |, <<, >>, ^).
komentarz 13 września 2017 przez John Doe Obywatel (1,680 p.)

Miałem nadzieję, że jest jakiś inny, magiczny, sposób. No cóż, trudno. 

PS: Sam chyba nie wiedziałem czego chcę, tworząc ten post. Teraz już wiem, że chciałem zadać te pytania: jak pracować na bitach w C++? Jak stworzyć blok danych o rozmiarze 118 bitów?

Dziękuję za odpowiedź/pomoc.

Podobne pytania

0 głosów
0 odpowiedzi 104 wizyt
pytanie zadane 14 listopada 2016 w Systemy operacyjne, programy przez Emshya Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 75 wizyt
pytanie zadane 15 kwietnia w Matematyka, fizyka, logika przez Squidy Bywalec (2,310 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

54,363 zapytań

98,200 odpowiedzi

201,961 komentarzy

26,687 pasjonatów

Przeglądających: 248
Pasjonatów: 17 Gości: 231

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...