Newsgroup: it.comp.lang.delphi
Titolo: Problema di matematica

Un saluto a tutti.
Posto anche in questo NG x avere più opinioni in merito
Sicuramente sarò anche [OT] ma vi chiedo aiuto
C'è nessuno che mi può aiutare a capire questo ?
Com'è possibile che in 15 byte siano contenuti 22 n°
ES.
       00 12 1A 0A CA 9C 84 1C A3 45 21 27 AB B2 07
       e rappresentano:
       1-17-5-21-2-6-11-7-8-10-9-15-4-14-18-3-19-20-12-22-13-16
Il file è con estenzione bin es pippo.bin
Fa parte di un gioco per il quale si sta cercando di creare un editor.
Dentro a questo file ci sono informazionioni di vario tipo, nomi,
caratteristiche, ecc....
Quelle riportate sopra riguardavano i n° di maglia dei dei giocatori
Diciamo che devo prelevare i dati dal file .bin ed inserirli in un editor
per poterli modificare e poi reinserirli modificati in quello spazio di
byte.
Ovviamente i dati si riferiscono ad una squadra sola poi lo stesso
procedimento verrebbe alpicato alle restanti.
Se servono altre info sono a dsposizione
ps:
    Sono molto interessato a capire il tipo di ragionamento da seguire per
    ricavare quei 22 n° dai 15 byte mostrati ed i comadi giusti per astrarli
    modificarli e reinserirli modificati in quello spazio di byte.
Grazie anticitatamente

per raffigurare un numero bastano  4 bit,
1 byte = 8 bit =  0..+255 (intervallo dei valori consentito)
4 bit = 0..+16
fai un pò tu !!!
ma che devi craccare qualche cosa ???
MAX

 Com'è possibile che in 15 byte siano contenuti 22 n°
Semplicemente perchè per rappresentare un numero 0..9 hai bisogno di 4 bit
(2^4 = 16) e sono pure un eccesso.
(Con 4 bit esprimi praticamente una cifra esadecimale, quindi 0 .. F)
Ora, se 4 bit sono esattamente la metà di un byte, con 15 byte puoi
rappresentare 30 numeri (da 0 a 9 o da 0 a F) diversi tra loro.
Ovviamente però ti devi separare dalla tabella ASCII in cui ogni carattere
viene codificato con 8 bit, per cui con quella codifica 15 byte possono
rappresentare solo 15 numeri ...
Se hai altre domande ....
--
- Carlo -
c.b...@libero.it

       1-17-5-21-2-6-11-7-8-10-9-15-4-14-18-3-19-20-12-22-13-16
I numeri che citi sono la sequenza da 1 a 22 scritta in
ordine sparso.
Quanti bit ci vogliono per memorizzare un numero da 1 a 22 ?
Risposta : 5 (calcolata come approssimazione all'intero
superiore del logaritmo in base 2 di 15).
Ora, 15 byte corrispondono a 15 * 8 = 120 bit, mentre per
memorizzare 22 numeri ne servirebbero solo 22 * 5 = 110.
Dato che in 15 byte potresti memorizzare massimo 24 numeri,
bastano e avanzano.
La codifica e' la seguente :
 1 = 00001
17 = 10001
 5 = 00101
21 = 10101
 2 = 00010
 6 = 00110
...
Per cui la suddivisione in byte e' :
 00001100 01001011 01010001 000110 ...
|--------|--------|--------|-------...
 1^ byte  2^ byte  3^ byte  4^ byte
--
CyberWalkie - walkietalkie(at)
libero.it

        1-17-5-21-2-6-11-7-8-10-9-15-4-14-18-3-19-20-12-22-13-16
si, è possibile senza nessuna magia nera !!
Con 15 byte, puoi rappresentare un bel numerone.
Infatti 15*8 = 120 bit
Ora il numero massimo esprimibile è 2 elevato a 120 che da un numero di 37
cifre, cioè questo:
1329227995784915872903807060280344576
Poi se uno vuole rappresentare anche i numeri negativi, allora si usa il
primo bit come bit di segno, ma questo non mi pare il tuo caso.
Ora dimmi una cosa. Come hai estrapolato i numeri delle maglie dei giocatori
dai 15 byte ?
Spero hai seguito un ragionamento oppure hai salvato la partita  e ci hai
riportato i numeri di maglia dei giocatori ? :-)))))
Comunque ciò che mi frena nella suddivisione del numero da 15 byte per
ottenere i numeri di maglia è il fatto che alcuni numeri sono a una cifra ,
altri a due. Quindi una volta salvate le informazioni nei 15 byte, quando il
gioco va a rileggerle, come fa a capire quali sono i giocatori aventi numero
di maglia a una cifra e quelli a due ?
Per questioni di tempo non ho provato a trasformare il numero in esadecimale
in un numero intero a 37 cifre, chissà se ci si tira fuori qualche indizio.
Se vuoi falla pure tu la trasformazione !!
Però le domande che mi pongo sono tante. Ad esempio, chi ti dice che è un
numero da 15 byte ?
E poi, se io dovevo salvare questo genere di informazioni, non mi sarei mai
andato a scrivere un nuovo tipo di dato per salvare solo i numeri di maglia.
Perchè se è un numero, si tratta di un tipo di dato definito dall'utente.
A quel punto, se volevano risparmiare in termini di spazio ( ne
dubito....non è un file che occupa un'eternità ), potevano salvare tutti i
dati in memoria, è poi con il più stupido algoritmo di compressione unito
alla cifratura, complicare le cose a chi vuole andarsi a leggere tali
informazioni risparmiando anche in termini di spazio.
Ora non ho altro da dirti. Anzi, se ti è possibile, posta altre informazioni
utili. Appena ho un attimo libero trasformo quei 15 byte in un numero intero
per vedere cosa esce fuori. ( un numero ovviamente !! ) eheh
Ciao ciao...
Antonio Tarolla

di maglia a una cifra e quelli a due ?
Se il gioco determina un numero fisso di bit con cui memorizzare
ogni numero di maglia, non ha bisogno di sapere se il numero e' a
1 o piu' cifre.  Piu' interessante e' invece sapere in che modo
il nostro amico ha tirato fuori *proprio* quei numeri dalla
sequenza esadecimale.
--
CyberWalkie - walkietalkie(at)
libero.it

 sequenza esadecimale.
La determinazione della sequenza qui sotto
        1-17-5-21-2-6-11-7-8-10-9-15-4-14-18-3-19-20-12-22-13-16
è derivata dal fatto che all'interno del gioco c'è un editor anche se
limitato.
La prima squadra ha quella secuenza di n° di maglia.
Mentre per quanto riguarda la stringa :
                        00 12 1A 0A CA 9C 84 1C A3 45 21 27 AB B2 07
mi è stata data da uno dei ragazzi che collabora all'editor.
Credo che lui li abbia trovati tramite offset con un editor Hex.
Mentre il fatto della relazione tra le due cose è quello che vorrei scoprire
per poter costruire questo benedetto editor.
Per qualsiasi domanda sono a disposizione.

 sequenza esadecimale.
già, forse convertendo quella stringa esadecimale in un numero decimale, si
ottengono tutte le cifre dei numeri di maglia.
Se è così, bisogna poi vedere come separare questi numeri !!
Ciao ciao...
Antonio Tarolla

Se è così, bisogna poi vedere come separare questi numeri !!
Mi sa che non ti e' ancora chiaro che cosa intendo dire.
Se la lunghezza in bit adottata per codificare ogni singolo
numero e' fissa, non c'e' alcun bisogno di sapere come
separare questi numeri, basta staccarli a gruppi di tot
cifre binarie le une dalle altre.
--
CyberWalkie - walkietalkie(at)
libero.it

 cifre binarie le une dalle altre.
già, non si eravamo capiti.
Quindi potrebbe essere 120 / 22 = circa 5 bit ogni numero di maglia.
2^5 = 32 che dovrebbe rappresentare tutti i numeri di maglia dei giocatori.
Se è così basta verificare !! ( con un po' di pazienza )
Senza che ci perdo tempo....tu ci hai già provato per caso ?
Ti saluto....buona domenica !!
Antonio Tarolla

 ha scritto nel messaggio
news:uiy17.4752$eB4.1...@news.infostrada.it...
