Bash shell De decimal a la conversión binaria

Estoy buscando una manera fácil en Bash para convertir un número decimal en un número binario. Tengo variables que necesitan ser convertidas:

$ip1 $ip2 $ip3 $ip4 

¿Hay un método simple para hacer esto sin mirar cada número individual?

Preferiría no tener que escribir mucho código.

Puedes usar bc como:

 echo "obase=2;$ip1" | bc 

Míralo

Convierta decimal a binario con comandos integrados bash (rango 0 a 255):

 D2B=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}) echo ${D2B[7]} 

00000111

 echo ${D2B[85]} 

01010101

 echo ${D2B[127]} 

01111111


Para eliminar los ceros a la izquierda, p. Ej., De ${D2B[7]} :

 echo $((10#${D2B[7]})) 

111


Esto crea una matriz con 00000000 00000001 00000010 ... 11111101 11111110 11111111 con la expansión del tirante de bash. La posición en la matriz D2B representa su valor decimal.

Consulte también: Descripción del código ({0..1} {0..1} {0..1} {0..1} {0..1} {0..1} {0..1} {0 ..1})

Método general para convertir un número entero en otra representación con otra base (pero base <= 10 debido al uso de dígitos 0,9 para la representación, solamente):

 function convertIntvalToBase () # (Val Base) { val=$1 base=$2 result="" while [ $val -ne 0 ] ; do result=$(( $val % $base ))$result #residual is next digit val=$(( $val / $base )) done echo -n $result } 

p.ej

 convertIntvalToBase $ip1 2 # converts $ip1 into binary representation 

Conversión de decimal a binario en Bash:

Estoy usando Ubuntu 14.04 para hacer esto.

Convierta los decimales del 1 al 5 en binarios.

 el@apollo:~$ bc <<< "obase=2;1" 1 el@apollo:~$ bc <<< "obase=2;2" 10 el@apollo:~$ bc <<< "obase=2;3" 11 el@apollo:~$ bc <<< "obase=2;4" 100 el@apollo:~$ bc <<< "obase=2;5" 101 

Ejemplo de bonificación:

 el@apollo:~$ bc <<< "obase=2;1024" 10000000000 el@apollo:~$ bc <<< "obase=2;2^128" 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000