Visualizzazione dei risultati da 1 a 8 su 8

Discussione: creazione di codici

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813

    creazione di codici

    ciao a tutti,
    ho la seguente esigenza: c'è una classe o qualche cosa del genere che, passata una stringa che contiene delle informazioni (circa 40 caratteri), mi restituisca un codice (di caratteri e numeri) tale che:
    contenga < 40 caratteri
    possa riottenere le informazioni ottenute
    possibilmente di dimensione fissa
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  2. #2
    se ho capito bene, è una cosa impossibile per il fatto che dovrai necessariamente perdere delle informazioni. Come fai a salvare la parola 'asgrfgoerigjioejgoiejhrviojr' e mantenere lo stesso numero di lettere e lo stesso ordine con un codice alfanumerico che abbia meno caratteri?
    Al massimo puoi associare ad un numero (ad esempio) una sequenza di caratteri, ma diventa molto meno flessibile la situazione.

    se non ho capito, me lo rispieghi in italiano?

    ciao

  3. #3
    Intanto è fondamentele conoscere lunghezza max e tipo caratteri (solo aflabetici, alfanumerici e/o car speciali) e poi, volendo, hai le gz_* per comprimere

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    esistono grosso modo due generi di azioni del tipo indicato:

    1. formare una stringa di lunghezza massima fissa predeterminata a partire da stringhe di lunghezza qualsiasi e che sia "la più unica possibile"
    2. analogamente al punto 1, ma in modo che vi sia una reale unicità e il processo sia anche reversibile

    Il punto 1 rientra nell'ambito delle cosiddette "tabelle hash": in pratica generare una sorta di "firma" di lunghezza massima stabilita a partire da stringhe di lunghezza qualunque... esistono vari algoritmi, alcuni molto complessi, ma in PHP puoi fare per esempio:

    Codice PHP:
    $stringaridotta md5($stringacompleta); // ottieni una stringa di 32 caratteri 
    ...dato che si riduce il numero di stringhe utilizzabili è possibile (anche se molto difficile) che si ottengano due stringhe ridotte uguali partendo da due complete diverse: è raro ma può capitare.


    Il punto 2 rientra invece nell'ambito delle "compressioni senza perdita di informazioni" (per esempio le compressioni ".zip"), ma non si può prestabilire la lunghezza massima della stringa finale... eventualmente si può fare una stima sulla base dei dati da "comprimere", ma bisogna conoscerli... in PHP puoi fare

    Codice PHP:
    $stringaridotta gzcompress($stringacompleta); 
    e il processo inverso:
    Codice PHP:
    $stringaridotta gzuncompress($stringacompleta); 

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    Originariamente inviato da lore83
    se ho capito bene, è una cosa impossibile per il fatto che dovrai necessariamente perdere delle informazioni. Come fai a salvare la parola 'asgrfgoerigjioejgoiejhrviojr' e mantenere lo stesso numero di lettere e lo stesso ordine con un codice alfanumerico che abbia meno caratteri?
    Al massimo puoi associare ad un numero (ad esempio) una sequenza di caratteri, ma diventa molto meno flessibile la situazione.

    se non ho capito, me lo rispieghi in italiano?

    ciao
    stai affermando, quindi, che tutte quelle cose che si chiamano compressione sono una bufala. Zip e Gzip sono algoritmi di compressione lossless, quindi non mi pare la tua risposta intelligente.
    .
    Cmq credo già di aver pensato a quello che fa a caso mio:
    scrivo una stringa di lunghezza max 72 caratteri (576 bit) e li raggruppo a 32 bit, associandogli un nuovo simbolo (da 0 a 9 a-v), così dovrei ottenere una nuova stringa di 18 caratteri...
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  6. #6
    Originariamente inviato da Hysoka
    stai affermando, quindi, che tutte quelle cose che si chiamano compressione sono una bufala. Zip e Gzip sono algoritmi di compressione lossless, quindi non mi pare la tua risposta intelligente.
    .
    Cmq credo già di aver pensato a quello che fa a caso mio:
    scrivo una stringa di lunghezza max 72 caratteri (576 bit) e li raggruppo a 32 bit, associandogli un nuovo simbolo (da 0 a 9 a-v), così dovrei ottenere una nuova stringa di 18 caratteri...
    sei permaloso? :master:

    con la mia risposta volevo gentilmente dirti che la domanda è posta male...è ovvio che esistono dei metodi (che tra l'altro conosco), ma dipende da l'uso che ne devi fare, dal contesto...

    buona fortuna

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    forse sto capendo cosa vuoi fare... ma per 32bit non bastano 0-9 a-v (che sono 32 simboli, ce ne vorrebbero 2^32...)... in pratica sei nel caso "2"... se specifichi che tipo di caratteri hanno le stringhe si può risolvere, faccio un ipotesi:

    se le stringhe di partenza hanno tutte caratteri ascii standard a 7bit, hai al massimo 40*7=280bit, che puoi rappresentare con 280/8=35 caratteri in totale... potrebbe andar bene?

  8. #8

    Aaaah

    Ma 'sta stringa che tipo caratteri continene?
    Cambia molto se il set è ben definito
    Fidatevi del dottor Auz!
    http://dottorauz.blogspot.com

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.