Miután az AI mondott három - egymásnak természetesen ellentmondó - megoldást, és egyikkel sem sikerült, valamint az általam talált programok példái is csak a teljes fájlok kicsomagolását tartalmazták, remélem, van itt valaki, aki már csinált ilyet, és el tudja mondani, hogyan is kellene.
Ha jól tudom, a gzip pont ilyen tömörítő, ami kisebb csomagokban röptében írható és olvasható is.
Alternatív megoldásként szóba jöhet más, nem egzotikus tömörítés is, amivel ezt könnyen el lehet játszani.
- 389 megtekintés
Hozzászólások
Miért is nem jó zcat
avagy gunzip -c
?
- A hozzászóláshoz be kell jelentkezni
Microcontroller
- A hozzászóláshoz be kell jelentkezni
Egy mikrokontrolleres példa: <font size=small>zcat filenev | sed -n '3,13p'</font>
Komolyabban mondva, ezt a komponenst kell beüzemelni az illető készüléken: https://www.zlib.net/
Ilyesmi függvények vannak benne:
gzFile gzopen(const char *path, const char *mode);
int gzread(gzFile file, voidp buf, unsigned len);
int gzclose(gzFile file);
Esetleg egy ilyen: https://github.com/pfalcon/uzlib
- A hozzászóláshoz be kell jelentkezni
A tömörítők tipikusan stream alapúak. Magyarul mindig az elejétől kezdve tudod csak kiolvasni. Nem kell beolvasni mindet a memóriába, az elejét eldobhatod, a végét kihagyhatod. Ha több fájlod van egy archívumban, pl. ZIP vagy RAR, akkor lehet fájlonként hozzáférni.
- A hozzászóláshoz be kell jelentkezni
Van 32kByte RAM-od hozzá? Mert egy standard zip-nek ennyi a sliding window mérete, azaz ennyit vissza kell tudnod olvasni belőle, azt meg hatékonyan RAM-ban lehet. Meg az összes unzip lib RAM-ban is csinálja.
- A hozzászóláshoz be kell jelentkezni
A mikrokontroller ESP32, tehát elég sok RAM van.
- A hozzászóláshoz be kell jelentkezni
Akkor használj egy neked szimpatikus unzip libet, nem túl bonyolultak.
Én ezzel szórakoztam valamikor:
https://github.com/jokkebk/JUnzip
Deflate-t ki tud tömöríteni zlib nélkül.
- A hozzászóláshoz be kell jelentkezni
Nem vagyok benne biztos, hogy jo otlet. Ezekben eleg keves RAM van, plusz a FS - ha mondjuk SD kartyarol jon a tomoritett adat - is foglal (fel kB/sector).
Minek?
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
Amit keresel, az a zlib példaprogramja, a zpipe.c, pontosan arra való, amit kérdezel. Ez úgy néz végig egy gzip streamet, hogy egyszerre mindig csak 16K van belőle kicsomizva.
(A zpipe parancssori kapcsolókkal és gzip fejléckezeléssel feltúrbózótt változata is kismillió példányban van fenn a github-on. Ugye az RFC szabványos deflate többféle fejléccel is használatban van, van a PKZIP (változó méretű), a zlib-es (2 bájt), meg a gzip fejléc (változó méretű, de legalább 10 bájt), a zlib-es iskolapélda fejléc nélküli streamhez való.)
- A hozzászóláshoz be kell jelentkezni
Köszönöm, ez alapján sikerült megoldanom.
- A hozzászóláshoz be kell jelentkezni