Re: Het compressiegeheim van Jan Sloot ontrafeld
Geplaatst: zo 17 okt 2010, 08:24
From: Lampje74
vooruit ik wilde het toch onder GPL licentie zetten. dus bij deze is onderstaande info vallend onder GPL...
Het idee is om een veld van X*Y te vullen met bytes. Door deze velden per rij, kolom en de 2 diagonaal richtingen op te tellen komt er een waarde uit welke kleiner is (byte wise) dan de originele reeks. met 32bit (4byte) kan je tot 16,...miljoen tellen. om daar te komen met het op tellen van een reeks bytes kan je met een gerust hart een veld van 1024*1024 maken.
Als voorbeeld.. 8 bits leverdt max 255 (decimaal)op. 2 bytes opgeteld leverdt 510 en dat past in 9 bit. in 10 bit past 4byte. enz.
Ivm magische vierkanten kan je ipv een vierkant veld ook een rechthoekig veld opgeven, scheeld iets.
dus in een veld van 256*256 bytes gaat die 65K aan data in. en komt er 4096byte uit. (256*4richtingen)*4byte. ok. had ik dus een klein rekenfoutje in excel.. met overhead ff over de 5KB.
Omdat ik op byte nivo werk maakt het eigenlijk niet uit wat voor data er in het in te pakken bestand staat. En je verwerkt net zo veel velden als nodig is om het gehele bestand ingelezen te hebben. Hierbij zal in het laatste veld een deel gevuld worden met 0 als waarde. Daar je de uitkomsten e.d. ook weer als bytes kan inlezen kan je het resultaat van de eerste verwerkings ronde nog (meer) maals inlezen en inpakken. beetje als een zip in een zip in een zip bestand, waarbij het bij zip niet kleiner wordt maar hier het resultaat wel.
Het uitpakken doe je (brute force) door de resultaat waardes langs de kanten van het veld te zetten en dan het veld net zo lang invullen/muteren tot je bij het optellen van de velden op de resultaten komt. Presto...
Duidelijk?
vooruit ik wilde het toch onder GPL licentie zetten. dus bij deze is onderstaande info vallend onder GPL...
Het idee is om een veld van X*Y te vullen met bytes. Door deze velden per rij, kolom en de 2 diagonaal richtingen op te tellen komt er een waarde uit welke kleiner is (byte wise) dan de originele reeks. met 32bit (4byte) kan je tot 16,...miljoen tellen. om daar te komen met het op tellen van een reeks bytes kan je met een gerust hart een veld van 1024*1024 maken.
Als voorbeeld.. 8 bits leverdt max 255 (decimaal)op. 2 bytes opgeteld leverdt 510 en dat past in 9 bit. in 10 bit past 4byte. enz.
Ivm magische vierkanten kan je ipv een vierkant veld ook een rechthoekig veld opgeven, scheeld iets.
dus in een veld van 256*256 bytes gaat die 65K aan data in. en komt er 4096byte uit. (256*4richtingen)*4byte. ok. had ik dus een klein rekenfoutje in excel.. met overhead ff over de 5KB.
Omdat ik op byte nivo werk maakt het eigenlijk niet uit wat voor data er in het in te pakken bestand staat. En je verwerkt net zo veel velden als nodig is om het gehele bestand ingelezen te hebben. Hierbij zal in het laatste veld een deel gevuld worden met 0 als waarde. Daar je de uitkomsten e.d. ook weer als bytes kan inlezen kan je het resultaat van de eerste verwerkings ronde nog (meer) maals inlezen en inpakken. beetje als een zip in een zip in een zip bestand, waarbij het bij zip niet kleiner wordt maar hier het resultaat wel.
Het uitpakken doe je (brute force) door de resultaat waardes langs de kanten van het veld te zetten en dan het veld net zo lang invullen/muteren tot je bij het optellen van de velden op de resultaten komt. Presto...
Duidelijk?