Zen_ Skrevet 29. april 2002 Del Skrevet 29. april 2002 Jeg holder på å lage et pakkeprogram med 92 til 1 ratio UTEN tap av data i QBASIC. Noen som veit hvordan jeg kan oversette ALLE tall, både negative og positive til binærkoder i QBASIC !?!!? Lenke til kommentar
Strips Skrevet 29. april 2002 Del Skrevet 29. april 2002 Stakkars. Har du slått deg veldig hardt :smile: Lenke til kommentar
Zen_ Skrevet 29. april 2002 Forfatter Del Skrevet 29. april 2002 Hva er problemet ditt? maximumratione er 92-1. Vet det høres extremt ut men jeg hadde en ahaopplevelse her om dagen. Forklaringen følger: Når man bruker OPEN filename$ FOR BINARY AS #1 og GET #1,1,a får man ut filens fire første bytes.(correct me if I´m wrong!). Ved å oversette disse til binærkoder(dette er problemet) får jeg 32 ettall og nuller. Så kommer pakingen: (bin$ er binærtallet, liksom) OPEN "fila_jeg_skal_pakke_inn_i.noe" FOR OUTPUT AS #1 IF bin$ = "00000000000000000000000000000000" then print #1, chr$(33);chr$(33); IF bin$ = "00000000000000000000000000000001" then print #1, chr$(33);chr$(34); IF bin$ = "00000000000000000000000000000010" then print #1, chr$(33);chr$(35); OSV. kan seff mekke en sak som bare looper i steden for å skrive opp nesten uendelig mange slike IF´er. Som du ser henter jeg ut binærkoden for 4 byte eller 4 tegn om du vil og erstatter det med 2 tegn. Dette git riktignokk bare 1-2 ratio men med alle tegn fra og med chr$(33); chr$(33); til om med chr$(255); chr$(255); kan jeg få nokk kombinasjoner til å erstatte 192 byte(tror jeg?) med 2 byte!! Litt vanskelig å forklare men har det helt klart for meg. Utpakkingen foregår jo seff bare andre veien. Uten tap av data... Lenke til kommentar
Ola PeK Skrevet 29. april 2002 Del Skrevet 29. april 2002 La oss seie at du har blokkar på 32 bits. Dette gir nesten 4,3 mrd. kombinasjonar. Du vil (slik eg forstår det)erstatte kvar 32 bits blokk med to blokker på 8 bits, altså 16 bits. Dette er 65536 kombinasjonar. I tillegg vil du ikkje ta i bruk chr$(1)-chr$(32), noko som ytterlegare reduserer antalet brukbare teikn. Dette kan gå bra dersom du veit at det originale(ukomprimerte) alfabetet ditt kun inneheld 65536 forskjellige teikn. Dersom det inneheld fleir vil du få tvetydige teikn i den komprimerte outputen. Altså umogleg å dekode. Til slutt eit tips: Ta eit søk på google etter Runlength-, Huffmann- eller LZW-koding. [ Denne Melding var redigert av: Ola PeK på 2002-04-29 17:02 ] Lenke til kommentar
Zen_ Skrevet 30. april 2002 Forfatter Del Skrevet 30. april 2002 SORRY!!!! Veit det. Hadde ikke noen mulighet til å regne med så store tall. QBASIC takkler det ikke og PC´en med windows er nede. Hakke bran nokk kalkis heller. Kom frem til det samme som deg ca en halvtime etter at jeg skreiv det :smile: Lenke til kommentar
Ola PeK Skrevet 30. april 2002 Del Skrevet 30. april 2002 Ok, du er tilgitt :smile: Du prøvde i allfall. Vil likevel anbefale deg å lese litt om Huffman og Runlength og andre kodingsteknikkar.(kan jo starte med runlength, ettersom det er ganske enkelt å forstå) Koding og kompresjon er eit ganske interessant fagfelt, der det garantert er rom for forbetringar. Neste gong finn du kanskje på noko som funkar... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå