Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119

    [Java] Generare numeri a partire da stringhe

    Ciao, dato un insieme di stringhe (Quindi tutte tra loro differenti) avrei bisogno di assegnare a ciascuna di essa un intero che la identifichi.
    Facendo in questo modo:
    codice:
    ...
    Byte toConvert = new Byte(stringa);
    int ide = toConvert.intValue();
    ...
    otterrei un intero differente per ciascuna stringa oppure correrei il rischio che eventuali cast "nascosti" possano portare ad uno stesso intero associato a stringhe diverse ??

    thks

  2. #2
    Il modo per scoprirlo è molto semplice, fatti una piccola applicazione a parte con solo questa parte, inserisci delle stringhe diverse e vedi che risultati ottieni così ci metti 5 minuti e sei sicuro al 100%

    Ciao.
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  3. #3
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da Matteo982
    Il modo per scoprirlo è molto semplice, fatti una piccola applicazione a parte con solo questa parte, inserisci delle stringhe diverse e vedi che risultati ottieni così ci metti 5 minuti e sei sicuro al 100%

    Ciao.
    Al 100% non sarei mai sicuro...
    A meno di non dimostrarlo formalmente...
    Comunque temo che la cosa non si possa fare.
    Ho fatto un piccolo main() che chiede di inserire stringhe differenti per poi calcolarne l'intero come scritto sopra ma lancia una NumberFormatException. Probabilmente perche' per effettuare la conversione si assume che la stringa corrisponda (Sia stata costruita) a partire da un valore intero.
    Non so...

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ciao!
    Ti bastava leggere nelle api di java che cosa facesse di preciso quel costruttore:

    http://java.sun.com/j2se/1.4.2/docs/...lang/Byte.html

    Nel tuo caso, se vuoi un codice 'univoco' potresti procedere con l'md5 della stringa (anche se otterresti una stringa e non un intero).

    Altrimenti, puoi ottenere un array di byte con getBytes di String

    http://java.sun.com/j2se/1.4.2/docs/...ng/String.html

    Ciao
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Al 100% era un modo di dire...è inutile fare i pignoli su queste cose...
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  6. #6
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da Andrea1979
    ciao!
    Ti bastava leggere nelle api di java che cosa facesse di preciso quel costruttore:

    http://java.sun.com/j2se/1.4.2/docs/...lang/Byte.html

    Nel tuo caso, se vuoi un codice 'univoco' potresti procedere con l'md5 della stringa (anche se otterresti una stringa e non un intero).

    Altrimenti, puoi ottenere un array di byte con getBytes di String

    http://java.sun.com/j2se/1.4.2/docs/...ng/String.html

    Ciao
    Si avevo visto il metodo per ottenere la codifica in bytes.
    Ma la specifica che mi e' stata data mi obbliga ad utilizzare interi.

  7. #7
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da Matteo982
    Al 100% era un modo di dire...è inutile fare i pignoli su queste cose...
    Che bella pernacchia...
    Non e' per fare il pignolo ma il fatto e' che se utilizzassi una funzione hash dovrei comunque fare un if che controlli di non aver generato un numero gia' generato precedentemente(Anche se con probabilita' minima).

  8. #8
    oltre a tutta la possibile attenzione e al possibile ingegno che ci si può mettere serve anche un pizzico di fortuna...
    Si può vincere o perdere, l'importante è vincere o perdere da uomini...

    Neverland - Il mio Forum

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ti rimando a questo.

    http://java.sun.com/products/jce/reference/index.html

    Per quanto riguarda il controllo su funzioni di hashing/codifica, bhè è vero: è stato dimostrato che md5 non è univoco (c'è il controesempio di certi cinesi con un paio di stringhe di un migliaio di caratteri ciascuna)... però, il rischio credo che sia accettabile.

    Hai un limite massimo per la lunghezza delle stringhe che vai a codificare, oppure potrebbero essere di lunghezza qualsiasi?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Originariamente inviato da Andrea1979
    Ti rimando a questo.

    http://java.sun.com/products/jce/reference/index.html

    Per quanto riguarda il controllo su funzioni di hashing/codifica, bhè è vero: è stato dimostrato che md5 non è univoco (c'è il controesempio di certi cinesi con un paio di stringhe di un migliaio di caratteri ciascuna)... però, il rischio credo che sia accettabile.

    Hai un limite massimo per la lunghezza delle stringhe che vai a codificare, oppure potrebbero essere di lunghezza qualsiasi?
    Il rischio sarebbe teorico piu' che pratico dato che le stringhe saranno di lunghezza piuttosto breve (Sono dei nomi di banche). Pero' formalmente non c'e' nessun limite alla lunghezza della stringa.
    Potrei utilizzare anche una funzione hash pero'... supponiamo che sia tanto sfigato da generare un numero gia' generato precedentemente (E supponiamo che mi accorga di questo...) dovrei trovare un modo che mi permetta di generarne un altro (Ed effettuare poi nuovamente il controllo di unicita') senza rischiare di spendere troppo tempo nella generazione del numero univoco. Potrei ad esempio, calcolare l'hash sulla stringa intera e poi, man mano, calcolarlo sulla stringa ottenuta togliendo dalla precedente l'ultimo carattere.
    In pochi passi (Comunque meno di 4 credo...) dovrei ottenere il numero tanto desiderato.
    Se non sbaglio... stringhe simili dovrebbero avere codici hash molto differenti (O forse cio' accade solo nelle funzioni hash utilizzate in crittografia ?)...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.