• 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
90 wizyt
pytanie zadane 13 września w C i C++ przez John Doe Obywatel (1,660 p.)
zamknięte 13 września 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 przez adrian17 VIP (104,520 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 przez John Doe Obywatel (1,660 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 przez adrian17 VIP (104,520 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 przez John Doe Obywatel (1,660 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 61 wizyt
pytanie zadane 14 listopada 2016 w Systemy operacyjne, programy przez Emshya Nowicjusz (120 p.)
–1 głos
2 odpowiedzi 64 wizyt
pytanie zadane 11 sierpnia 2016 w HTML i CSS przez Marcin Smoleń Nowicjusz (200 p.)
Obowiązuje już zaktualizowany regulamin.

Czy wiesz, że nie musisz już odświeżać strony głównej?

Lista pytań i odpowiedzi aktualizuje się automatycznie!

38,563 zapytań

76,428 odpowiedzi

149,240 komentarzy

18,032 pasjonatów

Przeglądających: 161
Pasjonatów: 9 Gości: 152

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.

...