Convertire un numero da base 10 a base 16.... hum?

Stato
Discussione chiusa ad ulteriori risposte.

TheTrigger

Utente Silver
12 Luglio 2007
87
12
7
78
mmmh... forse la questione è un pochino più complicata.. ma non troppo!
Il mio obiettivo è convertire un numero che varia da 0 a 100 in un numero esadecimale tra 0 e F, a dirla tutta devo farlo variare tra rosso e verde! F00 e 0F0..

...altrimenti, chi mi sa spiegare le Proporzioni?:D
che ogni settimana imparo e dimentico -.-
 
chiamiamo J il numro decimale e X il risultato esadecimale

J:100=X:15

X = (J*15)/100

quindi se per esempio J è 50
X = (50*15)/100 = 750/100 = 7.5

se J è 99
X = (99*15)/100 = 1485/100 = 14.85

poi sostituisci
10 -> A
11 -> B
12 -> C
13 -> D
14 -> E
15 -> F

e hai il tuo numero esadecimale.


comunque F00 non è rosso. il rosso è FF0000.
si usano due byte per ogni colore (rosso, verde, blu)
FF0000 significa : 100% di rosso, 0% di verde, 0% di blu.
ad esempio il gialllo è FFFF00, che significa 100% di rosso, 100% di verde, 0% di blu

chiaro?
 
Oromis92 ha detto:
chiamiamo J il numro decimale e X il risultato esadecimale

J:100=X:15

non vorrei dire una cazzata ma se scrivi X:15 non dovresti scrivere J:99? se conti lo zero lo dovresti contare da tutte e due le parti no?

EDIT ho visto ora che non ha detto 100 numeri ma da 0 a 100 e allora sono comunque 101 numeri no? dovrebbe essere J:101

meh. ha detto:
Oromis92 ha detto:
comunque F00 non è rosso. il rosso è FF0000.

Falso, F00 e' il shorthand per FF0000.

devi stare attento all'ambito in cui applichi questo discorso.
Se lavori su dati codificati a basso livello F00 è 000F00 e non FF0000...
 
[ot]
meh. ha detto:
Jacoboss ha detto:
meh. ha detto:
Oromis92 ha detto:
comunque F00 non è rosso. il rosso è FF0000.

Falso, F00 e' il shorthand per FF0000.

devi stare attento all'ambito in cui applichi questo discorso.
Se lavori su dati codificati a basso livello F00 è 000F00 e non FF0000...

Ovviamente, ma l'ambito e' palese :)

dici? A me sembra abbastanza oscuro, non parla di che linguaggio usa ed è sotto sicurezza lato server... mah...
o lo usa per fare un captcha ma mi manca ancora il linguaggio... [/ot]
 
grazie a tutti per le risposte :D
Cmq, parlo di colori in hex e sicurezza lato server.. dico PHP :p (ho dimenticato di specificarlo;)

Sono arrivato a questa soluzione:
PHP:
//Ottengo un numero da 0 a 255 senza virgola..
$variabile = round((valore1/valore2)*255, 0);

e infine per trasformare il numero in colore..
PHP:
echo '#'.dechex(0xFF - $variabile). dechex(0x00 + $variabile). '00';

Se $variabile è tendente a 0 avrò un colore rosso, rosso e verde come si vede sono inversamente proporzionali..
Ora non ho provato, ma scrivere 0x non serve a niente in questo caso vero? credo andasse benissimo 255 hehe..

Infondo la soluzione era più semplice di quel che mi credevo! ;)
 
Stato
Discussione chiusa ad ulteriori risposte.