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

Object Storage Arubacloud
0 głosów
1,069 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 Ekspert (344,860 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 Ekspert (344,860 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 574 wizyt
pytanie zadane 14 listopada 2016 w Systemy operacyjne, programy przez Emshya Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 291 wizyt
pytanie zadane 15 kwietnia 2018 w Matematyka, fizyka, logika przez niezalogowany

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...