Convertire da Bash un numero decimale in esadecimale

Come per la faq con la conversione in binario anche in questa facciamo utilizzo delle fantastiche estensioni bash sulle parentisi graffe per convertire in esadecimale.

Quindi, considerando sempre la faq bash sul binario partiamo inizialmente con il convertire un numero decimale tra 0 e 255 che corrisponde ad una cifra esadecimale tra 0 ed FF:

hex=({{0..9},{a..f}}{{0..9},{a..f}})
echo ${hex[*]}
come convertire un numero decimale in esadecimale con bash
bash- array di numeri esadecimali

A questo punto per avere il risultato del numero 200 oppure di 21 basta

echo ${hex[200]}
c8
echo ${hex[21]}
15

Se cambia il range del numero esadecimale ad esempio se raddoppiamo o quadruplichiamo basta che definiamo la variabile hex con uno o due blocchi in più del tipo {0..9},{a..f}.

Quindi riassumendo, la variabile hex dovrà contenere tanti blocchi {0..9},{a..f} in base al numero massimo binario che si vuole ottenere cioè se il massimo numero è 16n -1 allora ci vorranno n gruppi {0..9},{a..f}.

Come esempio se n=4 e quindi 164 -1=65535 i blocchi saranno 4

hex=({{0..9},{a..f}}{{0..9},{a..f}}{{0..9},{a..f}}{{0..9},{a..f}})
echo ${hex[60000]}
ea60
echo ${hex[37]}
0025

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

43 − 36 =