• 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?

Aruba Cloud - Virtual Private Server VPS
0 głosów
1,214 wizyt
pytanie zadane 13 września 2017 w C i C++ przez John Doe Obywatel (1,720 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 Mentor (352,580 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,720 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 Mentor (352,580 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,720 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 598 wizyt
pytanie zadane 14 listopada 2016 w Systemy operacyjne, programy przez Emshya Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 335 wizyt
pytanie zadane 15 kwietnia 2018 w Matematyka, fizyka, logika przez niezalogowany

93,324 zapytań

142,323 odpowiedzi

322,390 komentarzy

62,653 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...