我目前正在开发一个函数,它可以将十进制转换为二进制,而无需使用awk sed printf xxd od perl ibase,obase,bc。然而,该函数成功地将十进制转换为二进制,但由于某种原因,它在转换后的二进制末尾输出“expr:Division by Zero”
我曾试图删除expr和设置为一个正常的公式,但它分发了另一个错误,所以我没有选择坚持这一点,因为它是壁橱的事情,转换十进制到二进制
for i in $d do #$d is the decimal
num = $d #decimal number
div = 128 #it is the power number (we should start dividing by 128)
sec = 0 #to run the loop 8 times
while [[ $seq -ne 9 ]]
do
bin=`expr $num / $div`
echo -n "$bin" # we can add the replacing x and space here
rem=`expr $num % $div` # gets the remainder
div=$(expr $div / 2) #to get the decreasing power of 2
num=$rem #next the num should be equal to the remainder
sec=$(sec + 1)
done
done
#OUTPUT
Output : 11111000expr:division by zero
任何提示都将不胜感激
1条答案
按热度按时间tkqqtvp11#
这里有很多错误,从简单的语法开始。如果你想使用纯
bash
将十进制表示转换为二进制表示,你可以使用下面的脚本:这应该适用于所有可以用63位表示的非负整数(除非您的
bash
版本非常旧)。