Newsgroup: it.scienza.informatica
Titolo: Chi mi aiuta a risolvere il problema ?

Una mia amica mi ha posto il seguente problema:
"Ho un gioco nel computer, cambiando le stringhe successive all'interno
dell'eseguibile con un editor binario, cambia il punteggio sul video ma non
so in che modo sono codificate.
Esempio scrivendo   Hex  80 C0 80 C0  appare  0  punti,
scrivendo  Hex  81 C2 01 40  appare   100 punti ecc.
Hex  83 83 41 C4  =   500  punti
Hex  81 83 C4 0A  =  1650  punti
Hex  81 87 07 84   =   ? ? ?  punti ? ?  "
Chi mi aiuta a risolvere il problema ?
Alessia.

...


 inverso.......visto che 00 00 00 iniziali non contano, scrivi solo 23.
[...]                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Scusa ma questa cosa da dove salta fuori?!?!? Non e' come dire che
scrivere (in decimale) 10000 e' come scrivere 1? Ho sempre pensato che
0x23000000 fosse 587.202.560, ma se mi spieghi perche' non e' cosi', te
ne sono grato.
Ciao, Luca.
-- 
*******************************************************
       "Dio non e' morto.
        E' vivo e sta lavorando
        a un progetto
        meno ambizioso"
				    graffito anonimo
  Reply to 
bia...@maganet.net
*******************************************************


Bene!! Vado subito ad acquistare una lamborghini diablo visto che gli zeri non
contano!!!!!!
 --- uzza ---

ne sono grato.
Forse Antonio si riferisce al fatto che un numero "lungo" quando viene
scritto su file viene invertito.
0x12ABCDEF viene scritto come EF CD AB 12, ma questo e' vero per le
piattaforme DOS/Intel80x86, non per tutte in generale.
Cosi' come non e' vero in modo assoluto che un byte sia formato da 8
bit, per cui la stringa in questione sia lunga 4 byte.

 bit, per cui la stringa in questione sia lunga 4 byte.
Dai, fai il bravo, penso che quasi nessuno abbia mai visto una macchina
con byte diversi da 8 bit, quindi concedici l'illusione 1 byte = 8 bit .
Ciao, Luca
-- 
 Reply to 
luca....@tiscalinet.it

con byte diversi da 8 bit, quindi concedici l'illusione 1 byte = 8 bit .
Fai tu il bravo, e credi a quello che dico ;)
"The definitions of object, bit, byte, and alignment reflect a strong
consensus, reached after considerable discussion, about the
fundamental nature of the memory organization of a C environment: 
All objects in C must be representable as a contiguous sequence of
bytes, each of which is at least 8 bits wide.  
A char (or signed char or unsigned char)  occupies exactly one byte.  
(Thus, for instance, on a machine with 36-bit words, a byte can be
defined to consist of 9, 12, 18, or 36 bits, these numbers
being all the exact divisors of 36 which are not less than 8.)  These
strictures codify the widespread presumption that any
object can be treated as an array of characters, the size of which is
given by the sizeof operator with that object's type as its
operand." (ANSI C Rationale)

con byte diversi da 8 bit
Ma, su. Vedi il jargon file. Molte macchine hanno avuto caratteri che
non erano 8 bit.
-- 
Adam Atkinson (
gh...@mistral.co.uk
)
What's purple and commutes? An abelian grape.

In pratica i byte di una word sono memorizzati in ordine inverso,
prima quello meno significativo e poi quello piu` significativo:
0xAABB viene memorizzato come BBAA
Analogamente per 0xAABBCCDD ottieni DDCCBBAA
(se non ricordo male) prima la parola meno significativa e
poi quella piu` significativa, iterando il procedimento fino ad arrivare
al byte.
Ad ogni modo anche in un file troveresti la stessa situazione.
Ovviamente questo solo su macchine left-endian (come i pc)
paolo
-----------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
-----------------------------------------------------------------

con byte diversi da 8 bit, quindi concedici l'illusione 1 byte = 8 bit .
Penso che Andrea abbia ragione riguardo il fatto dei 7 bit = 1 byte !!
Il codice Ascii è un codice a 8 bit anche se nei libri dicono che è a 7 bit.
Io mi sono fatto un' idea......quello che usiamo è un' estesione di quello a
7 bit.
Però ci staranno anche altri sistemi di codifica..........il mondo è vasto,
come del resto è vasto il mercato dei PC !!
Ti saluto.....ciao !!
P.S. Spero di essere stato esauriente
Antonio Tarolla

 
I messaggi dei NG, per esempio, sarebbe buona norma spedirli
con byte di 7 bit :-)
bye!
-- 
Emanuele Cesena                 
http://www.penguinpowered.com/~ecesena
ece...@penguinpowered.com
                 Attenti all'antispam NOSPAM
"10. Non dare mai ordini per iscritto", dal decalogo di Spark per il giovane
manager

LINGUAGGIO  PASCAL
1) In che tipo di iterazione si usa l'if condizionato?
2) Come sono strutturate le istruzioni if, for, while, repeat?
3) Che cosa boolean e a che tipo di dati si riferisce?
4) che cos'è l'array?
Vi Ringrazio anticipatamente per il vostro aiuto.

1) Nei data base come si costruisce una tabella usando i comandi SQL (create
table, select, create wiew, etc. ....)
2) Riguardo ai dati, nei data base, che cosa significa integrità semantica,
integrità di contesa, integrità referenziale.
Vi ringrazio anticipatamente del vostro aiuto.
Rocco.

con byte diversi da 8 bit, quindi concedici l'illusione 1 byte = 8 bit .
ma 4 bit non fanno un 'nibble'??

1) Nei data base come si costruisce una tabella usando i comandi SQL
(create table; select; create wiew; etc. ....)


 Dipende. Sai cosa vogliono dire "big-endian" e "small-endian"?
Hai ragione, un attimo di "smarrimento" ;-)
-- 
 Reply to 
luca....@tiscalinet.it

7 bit.
Forse ti confondi con l'EBCDIC.
In ogni caso, io parlo di byte come formato da minimo 8 bit.
Per   quanto  riguarda  il  codice  ASCII,  i  caratteri  da
rappresentare   con  8  bit  sono  i  cosiddetti  "caratteri
estesi", per gli altri bastano i 7 bit.

table, select, create wiew, etc. ....)
Ho risposto già ad altri tuoi messaggi.
Ancora devo capire che linguaggio di programmazione usi.
Non posso dirti l' SQL in due righe ........ma scusa: dove utilizzi SQL ?
Con quale linguaggio ?
Ad esempio CREATE TABLE lo puoi utilizzare così: (se ben ricordo)
CREATE TABLE <nometabella> (
       campo1  tipodaticampo,
       campo2  tipodaticampo,
       ecc.......
       ....    );
dove nometabella è il nome della tabella, campo1 ecc sono il nome dei campi,
tipodaticampo indica che dati deve contenere il campo (numeri, caratteri
ecc)


4) che cos'è l'array?
Premessa:
per tipo di dato intendo il tipo di variabile !! (es: integer, real,
boolean, string, char ecc...)
L' array è un tipo di dato (chiamalo anche variabile) che contiene elementi
dello stesso tipo.
Per accedere ai singoli elementi, si fa riferimento al loro indice.(un
numero)
Cioè puoi definire array di interi, array di reali, array di stringhe, array
di valori booleani, nei nuovi linguaggi si possono definire anche altri tipi
di array !!
Cioè l' array deve essere di tipo omogeneo, per lavorare con tipi di dato
non omogenei, devi utilizzare i record !!
Ad esempio:
Numeri:array [0..10] of integer;
dichiaro un array di interi, gli assegno il nome "Numeri" e gli dico che
deve essere indicizzato partendo da 0 fino a 10, cioè deve contenere 11
elementi.
(anche l' elemento 0 è un elemento)
ora lo posso riempire di valori in questo modo:
for I:=0 to 10 do
 Numeri[ I ]:=I;
cioè copio nell' array i numeri da 0 a 10 !! Quindi copio 11 valori, 11 sono
gli elementi quindi l' array avrà un contenuto come questo:
0, 1, 2,  3,  4,  5,  6,  7,  8,  9,  10
Gli array sono importantissimi perchè permettono di fare certe operazioni
(come l' ordinamento alfabetico ad esempio) in memoria con poche istruzioni.
Magari inizialmente può risultare un po' difficile gestirli, ma poi con un
po' di pratica ci riuscirai !!
Acquista un manuale PASCAL ed imparerai almeno le basi. Purtroppo è
difficile spiegare un argomento o più argomenti in poche righe !!
Saluti !!
Antonio Tarolla

Già risposto sopra negli altri due (o più) messaggi che avete lasciato !!
Saluti
Antonio Tarolla

table, select, create wiew, etc. ....)
innanzitutto dipende dal contesto in cui usate l'SQL, poichè esso è uno
stardard di linguaggio per db relazionali, non un linguaggio vero e proprio.
Per miniSQL si usa in un modo, come API in un'altro, in PL SQL in un'altro.


Vi Ringrazio anticipatamente per il vostro aiuto.
certo che voi ne avete di strada da fare nel mondo dell'inf!!!!
The young bad Werther
f...@ctonline.it
fabi...@geocities.com
http://www.geocities.com/Paris/Jardin/6726/

 Vi Ringrazio anticipatamente per il vostro aiuto.
Risponde:
1. In quelle per vero e per falso.
2. If e' una selezione(a una via o a due vie)
    For e' un ciclo enumerativo
    While e Repeat gestiscono iterazioni(condizioni in testa, per vero e in
coda,per falso).
3. E' un tipo predefinito che assume valori vero/falso.
4. E' un tipo strutturato che realizza il vettore.
da: 
dca...@tin.it

non omogenei, devi utilizzare i record !!
Diciamo che l'omogeneita' degli elementi e' sempre mantenuta (sono
pure sempre record dello stesso tipo).
Quello che puo' variare e' il tipo di dato a cui si accede all'interno
del record.
Esiste, cioe', la possibilita' di definire dei record in modo simile a
quanto si fa in C con le union, cioe' all'interno della stessa zona di
memoria si accede in modi diversi ai dati contenuti. 

 integrità di contesa, integrità referenziale.
Integrita' semantica: i dati contenuti nella banca dati hanno senso se riferiti
al mondo reale o modello che rappresentano.
Per esempio, l'eta di una persona si puo rappresentare con un intero in un
database. Un integer puo' essere anche negativo, ma in quel caso l'integrita'
semantica non vale piu', in quanto quel valore non ha piu' significato.
Integrita' referenziali: tutte le integrita' definite da chiavi sono
rispettate.

In ogni caso, io parlo di byte come formato da minimo 8 bit.
Bč anch' io mi riferisco sempre a quello.......i sette bit non li considero
proprio e finora non ho avuto problemi di nessun tipo !!
Ti saluto.......ci sentiamo !!
Antonio Tarolla

Vi Ringrazio anticipatamente per il vostro aiuto.
A giudicare dalle domande sei proprio digiuno eh?
Ti consiglio il libro "Introduzione al Pascal" edito
da Addison Wesley (mi pare)
Paolo


del record.
Certamente ......... nel record è possibile utilizzare tipi differenti
proprio perchè si possono dichiarare variabili al suo interno che possono
essere di qualsiasi
tipo......al contrario dell' array che permette di dichiarare solo i limiti
del suo indice (quindi il numero degli elementi) e definire un tipo di dato
globale per tutti !!
Ti saluto.......ciao !!
Antonio Tarolla

essere di qualsiasi
No, aspetta, non intendevo propriamente questo.
Su un ng dedicato al pascal una volta qualcuno chiese come poteva far
si' che la lettura da un file si alternasse tra quella di una stringa
e quella di un valore numerico ed io gli spiegai che era possibile
utilizzare i record in questo modo :
type mio_record = record
                    case Tipo : byte of
                       0 : ( S : string[20] ) ;
                       1 : ( N : integer ) ;
                  end ;
In questo caso, viene allocato spazio per l'elemento tra S e N piu'
grande (presumibilmente S) e quindi nello stesso spazio di memoria
risiedono dati diversi, che tramite la lettura di "Tipo" vengono
discriminati.
E' la situazione simile a quella delle "union" del C.
Non so se hai presente.