Bash shell Decimal para conversão binária

Eu estou procurando uma maneira fácil no Bash para converter um número decimal em um número binário. Eu tenho variables ​​que precisam ser convertidas:

$ip1 $ip2 $ip3 $ip4 

Existe um método simples para fazer isso sem olhar para cada número individual?

Eu preferiria não ter que escrever muito código.

Você pode usar bc como:

 echo "obase=2;$ip1" | bc 

Veja

Converter decimal para binário com comandos embutidos bash (intervalo de 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 remover zeros à esquerda, por exemplo, de ${D2B[7]} :

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

111


Isso cria uma matriz com 00000000 00000001 00000010 ... 11111101 11111110 11111111 com a expansão do suporte do bash. A posição na matriz D2B representa seu valor decimal.

Veja também: Entendendo o código ({0..1} {0..1} {0..1} {0..1} {0..1} {0..1} {0..1} {0 ..1})

Método geral para converter um número inteiro em outra representação com outra base (mas base <= 10 devido ao uso de dígitos 0..9 para representação, apenas):

 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 } 

por exemplo

 convertIntvalToBase $ip1 2 # converts $ip1 into binary representation 

Decimal para conversão binária no Bash:

Estou usando o Ubuntu 14.04 para fazer isso.

Converta os decimais de 1 a 5 em binário.

 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 

Exemplo de bônus:

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