Convertire da Bash un numero decimale in binario

Pubblicato il

Supponiamo di star lavorando su uno script bash e che per qualche esigenza, nemmeno troppo difficile dalla realtà, sia indispensabile dover convertire un numero o una variabile decimale in numero binario.

Ci sono naturalmente diverse soluzioni ma quella che vi propongo non fa utilizzo di programmi esterni ma è bash a tutti gli effetti.

Per prima cosa dobbiamo sapere il valore massimo del numero binario da ottenere in Bash ovvero in quanti bit potrà essere compreso.

Consideriamo che stiamo parlando di un byte e quindi 8 bit e cioè il numero binario andrà da 00000000 a 11111111 (da 0 a 255) allora possiamo scrivere:

bin=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})
echo ${bin[*]}
come convertire un numero decimale in binario con bash
bash - array di numeri binari

Il più è fatto, infatti per avere il risultato ad esempio del numero 125 o di 78 in binario basta semplicemente

echo ${bin[125]}
01111101
echo ${bin[78]}
01001110

Se cambia il range del numero binario ad esempio se raddoppiamo o quadruplichiamo basta che definiamo la variabile bin con uno o due blocchi in più del tipo {0..1}.

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

Come esempio se n=10 e quindi 210 -1=1023 i blocchi saranno 10

bin=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})
echo ${bin[1023]}
1111111111
Vedi tutte le FAQs

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.