有没有办法在Bash中本地计算十进制数的二进制表示,而不需要使用bc
之类的外部程序?
实施例:
假设我在基数10中有5
:我想在基数2中获得101
。
为什么使用bc
不是一个选项:循环性能。
答案 0 :(得分:1)
使用bash的算术运算符而不是查找表。例如
#!/bin/bash
d2b() {
local bits=
local num=$1
while [[ $num != 0 ]]
do
if (( $num & 1 ))
then
bits="1$bits"
else
bits="0$bits"
fi
let num=$(($num >> 1))
done
echo ${bits:=0}
}
for n in $*
do
d2b $n
done