Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Matematica e colori esadecimali

    Premetto di non essere sicura di stare postando nel posto giusto, quindi chiedo scusa al Moderatore che eventualmente dovrà provvedere.

    Problema: mi sto esercitando a calcolare manualmente i valori RGB di un colore espresso in valori esadecimali e viceversa.
    Dato che nell'esadecimale i numeri da 10 a 15 sono sostituiti con le lettere alfabetiche da A a F, e FF è il valore massimo, (corrispondente a 255), ho dedotto che FF significa F moltiplicato per F (e fin qui ci arriva anche mio nipote).

    Ora, prendendo un colore a caso espresso in esadecimali, per esempio #C64C3F, provo a ricavarmi i valori RGB secondo quanto dedotto sopra:
    C moltiplicato per 6 = 72 (R)
    4 moltiplicato per C = 48 (G)
    3 moltiplicato per F = 45 (B)

    Purtroppo questi calcoli non corrispondono ai valori RGB reali del colore #C64C3F: infatti quelli esatti sono R:198, G:76, B:63.
    Come mai?
    Dove sbaglio?
    Forse c'è un motivo se il mio prof. di matematica mi presentò all'esame di maturità con 3 in pagella.

    Ciao e grazie...
    sono da sempre una Devota

  2. #2
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    È la deduzione che è sbagliata: la codifica in esadecimale dei colori RGB presenta 2 cifre per ogni canale:

    #RRGGBB

    RR = un valore tra 0 e 255 espresso in esadecimale che indica la quantità di rosso
    GG = un valore tra 0 e 255 espresso in esadecimale che indica la quantità di verde
    BB = un valore tra 0 e 255 espresso in esadecimale che indica la quantità di blu

  3. #3
    oddio, ma 15 per 15 non fa 255, fa 225!... diamine...
    sono da sempre una Devota

  4. #4
    Originariamente inviato da longline
    È la deduzione che è sbagliata: la codifica in esadecimale dei colori RGB presenta 2 cifre per ogni canale:

    #RRGGBB

    RR = un valore tra 0 e 255 espresso in esadecimale che indica la quantità di rosso
    GG = un valore tra 0 e 255 espresso in esadecimale che indica la quantità di verde
    BB = un valore tra 0 e 255 espresso in esadecimale che indica la quantità di blu
    questo l'avevo capito, infatti moltiplico le cifre due a due...cioè tratto il numero come se fosse composto da coppie di cifre.

    Ma se F sta per 15, perchè FF sta per 255? vuol dire che FF non significa F x F? e se non significa F x F, allora cosa significa?
    sono da sempre una Devota

  5. #5
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Non devi moltiplicare nulla:

    L'esadecimale C6 corrisponde a 198 in decimale.
    L'esadecimale 4C corrisponde a 76 in decimale.
    L'esadecimale 3F corrisponde a 63 in decimale.

  6. #6
    questo lo vedo da me ma vorrei capirne il motivo e riuscire a "tradurre" i valori.
    ovvero: se
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (DEC)
    1 2 3 4 5 6 7 8 9 A B C D E F (HEX)

    perchè i conti non tornano?

    Mi spiace che tu debba avere a che fare con una numerofoba quale sono io

    Edit: ho deciso di desistere, qui si tratta di matematica allo stato puro. Mi affiderò alla calcolatrice come tutti.
    sono da sempre una Devota

  7. #7
    Originariamente inviato da AnitaGaribaldi
    questo lo vedo da me ma vorrei capirne il motivo e riuscire a "tradurre" i valori.
    ovvero: se
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (DEC)
    1 2 3 4 5 6 7 8 9 A B C D E F (HEX)

    perchè i conti non tornano?

    Mi spiace che tu debba avere a che fare con una numerofoba quale sono io

    Edit: ho deciso di desistere, qui si tratta di matematica allo stato puro. Mi affiderò alla calcolatrice come tutti.
    Cara Anita, non arrenderti perchè è più facile di quello che sembra.
    La regola generale che devi tenere in considerazione per la conversione DEC->HEX è che se il valore da convertire da DECIMALE ad ESADECIMALE è minore di 16 allora lo converti immediatamente utilizzando la seguente tabella di conversione e gli aggiungi davanti uno "0":
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (DEC)
    1 2 3 4 5 6 7 8 9 A B C D E F (HEX)
    Se, invece, il valore da convertire da DECIMALE ad ESADECIMALE è maggiore di 16 allora lo devi dividere per 16 tenendo in considerazione il resto (vedi l'esempio che segue).

    Esempio
    Prendiamo una tripletta decimale RGB 236, 166, 15 (un bel arancione)

    236 : 16 = 14 con il resto di 12
    14 = E
    12 = C
    quindi 236 = EC


    166 : 16 = 10 con il resto di 6
    10 = A
    6 = 6
    quindi 166 = A6


    15 è minore di 16 ed equivale ad F, devo però farlo precedere da uno "0"
    quindi 15 = 0F


    In definitiva RGB 236 , 166 , 15 sarà quindi HEX # EC A6 0F

    Spero di essere stato abbastanza chiaro.



  8. #8
    Utente di HTML.it L'avatar di cispa
    Registrato dal
    Aug 2002
    Messaggi
    16
    Magari hai gia' risolto ma aggiungo la mia voce al coro.
    x^y equivale a dire il numero x elevato alla y.
    Quello che cambia tra le due numerazioni e' la base.
    Cioe' in base dieci abbiamo che il numero 315 corrisponde a

    3*(10*10) + 1*10 + 5*1

    che equivale a dire

    3*(10^2) + 1*(10^1) + 5*(10^0).

    In base 16, cioe' nella numerazione esadecimale devi fare lo stesso:

    2F8 equivale a:

    2*(16^2) + 15*(16^1) + 8*(16^0) = 2*256 + 15*16 + 8.

    Quindi

    FF = 15*16 + 15 = 255.

    Boh, spero di essere stata chiara =).

  9. #9
    Utente di HTML.it L'avatar di lukas
    Registrato dal
    Sep 2002
    Messaggi
    428
    ... mi è piaciuto tanto il (boh) alla fine della dimostrazione.

  10. #10
    Grazie davvero per le risposte, ora mi metto a studiare sulle cosine che mi avete detto perchè in realtà non voglio affatto arrendermi.


    In effetti c'è poco da studiare, è davvero facile! Grazie ancora
    sono da sempre una Devota

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.