Dan*_*ore 29 binary bash shell decimal
我正在寻找一种简单的方法在Bash中将十进制数转换为二进制数.我有需要转换的变量:
$ip1 $ip2 $ip3 $ip4
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以在不查看每个数字的情况下执行此操作?
我宁愿不要写很多代码.
cod*_*ict 57
您可以使用bc:
echo "obase=2;$ip1" | bc
Run Code Online (Sandbox Code Playgroud)
Cyr*_*rus 33
使用bash builtin命令将十进制转换为二进制(范围0到255):
D2B=({0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1}{0..1})
echo ${D2B[7]}
Run Code Online (Sandbox Code Playgroud)
00000111
echo ${D2B[85]}
Run Code Online (Sandbox Code Playgroud)
01010101
echo ${D2B[127]}
Run Code Online (Sandbox Code Playgroud)
01111111
要删除前导零,例如${D2B[7]}:
echo $((10#${D2B[7]}))
Run Code Online (Sandbox Code Playgroud)
111
这将创建一个00000000 00000001 00000010 ... 11111101 11111110 11111111带有bash 大括号扩展的数组.数组D2B中的位置表示其十进制值.
另请参阅:了解代码({0..1} {0..1} {0..1} {0..1} {0..1} {0..1} {0..1} {0 ..1})
Bash中十进制到二进制的转换:
我正在使用 Ubuntu 14.04 来做到这一点。
将十进制 1 到 5 转换为二进制。
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
Run Code Online (Sandbox Code Playgroud)
奖金示例:
el@apollo:~$ bc <<< "obase=2;1024"
10000000000
el@apollo:~$ bc <<< "obase=2;2^128"
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)