• 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
244 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 Mędrzec (151,280 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 Mędrzec (151,280 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 114 wizyt
pytanie zadane 14 listopada 2016 w Systemy operacyjne, programy przez Emshya Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 80 wizyt
pytanie zadane 15 kwietnia w Matematyka, fizyka, logika przez Squidy Bywalec (2,310 p.)
Porady nie od parady
Wynikowy wygląd pytania, odpowiedzi czy komentarza, różni się od tego zaprezentowanego w edytorze postów. Stosuj więc funkcję Podgląd posta znajdującą się pod edytorem, aby upewnić się, czy na pewno ostateczny rezultat ci odpowiada.Podgląd posta

57,547 zapytań

102,554 odpowiedzi

211,522 komentarzy

29,378 pasjonatów

Przeglądających: 317
Pasjonatów: 27 Gości: 290

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.

...