Do you need any help?

HW6 trovare base 256

M
Michele13 (1120 points)
4 17 20
asked Nov 20, 2020 in HW6 obbligatorio by Michele13 (1,120 points)
ho capito che devo codificare x,y,w,h in base 256 ma come faccio?

E ammesso che trovi il valore in base 256 come mi ricavo i valori di RGB del pixel da colorare?

3 Answers

twgever (15190 points)
7 27 105
answered Nov 20, 2020 by twgever (15,190 points)
beh, hai 3 valori per i colori: (a,b,c), la somma di questi moltiplicati per il valore giusto dà come risultato o x, o y, o w, o h. Facciamo che sia il valore di x, quindi a*(256^2) + b*(256^1) + c*(256^0) = x. E' la conversione di numeri da una base all'altra! il punto è che noi avremo come numeri di partenza, quelli in base decimale. Allora la cosa è semplice, come troviamo i numeri in base 2? abbiamo 2 tecniche. o dividere i numeri per 2 e procedere in base al resto, oppure (idea migliore secondo me) sottrarre al numero da convertire la potenza di 2 più alta possibile. Se avessimo 78, possiamo sottrarre 64, e ottenere 14, possiamo provare a sottrarre 32, e vediamo che non si può fare, proviamo con 16, no, proviamo con 8 e otteniamo 6, proviamo con 4 e otteniamo 2, proviamo con 2 e otteniamo 0, proviamo con 1 non si può fare. In base a chi può essere sottratto, dal più alto, assegniamo i valori binari, cioè 1001110. Il procedimento da seguire con le altre basi (inclusa 256) è totalmente analogo.

Per quanto riguarda la prima parte della domanda, mi sa che è uno dei problemi principali dell'HW.
andrea_25 (6070 points)
2 2 24
answered Nov 20, 2020 by andrea_25 (6,070 points)

Per convertire in base 256 un numero in base 10 si puó applicare il metodo delle divisioni iterate, che dovresti aver studiato nel corso di progettazione di sistemi digitali.

In ogni caso, si procede nel modo seguente:

dividere il numero da convertire per la base b fino a quando l’ultimo quoziente è minore della base stessa (b), dopodiché il numero convertito si ottiene prendendo l’ultimo quoziente e tutti i resti delle divisioni, procedendo dall’ultimo resto al primo e scrivendoli da sinistra verso destra.

 ottenendo ad esempio il numero 690 tramite questo metodo, lo converti in una tupla in questo modo: (6, 9, 0)

g
giacomo_venturini (6680 points)
2 5 39
answered Nov 20, 2020 by giacomo_venturini (6,680 points)
Il risultato da ottenere è (A, B, C) dove A, B e C sono valori da 0 a 255.
Il passaggio da base 10 a base X si può ottenere con il metodo delle divisioni successive, quindi dovrai prendere i resti di ripetute divisioni per 256 del valore e inserirli nelle 3 posizioni.
Una volta ottenuti i tre valori puoi riottenere il valore iniziali con la seguente espressione (A*256^2) + (B*256) + C