【发布时间】:2018-07-02 07:21:43
【问题描述】:
你好,我对 bash 编程非常陌生,对于一项任务,他们要求我从所有基本类型转换为所有其他基本类型(一次转换一次)例如:十进制到二进制,二进制到十进制,十六进制到二进制和返回等。问题是我们不允许使用任何类型的技巧或捷径,例如使用 bc、poisix 或任何类型的 oneliner 解决方案。即使 printf 也是禁止的。我们需要使用我们自己的函数,就像我为二进制到十进制所做的那样
for (( x=0; num>0; x++ )); do
em=$(echo $(( $num % 2 )))#divides num in 2 remainder gets stored in rem, num #keeps the same value
num=$(( $num/2))#num gets divided by two and stores its new value
array[x]=$rem
done
#printing part
if [ $x=0 ]; then #dont know why it doesnt work if i take this "if" out.
for (( x=${#array[@]}-1; x>=0; x-- )); do #prints all remainders backwards
echo "${array[x]"
done
fi
希望你现在知道我所说的“没有捷径或技巧”是什么意思。
所以这是我现在面临的实际问题..
您在此转换中看到 num 的值是由用户通过以下方式引入的:
read num
但现在我需要将十六进制转换为十进制值。我不确定是否使用数组或我还能做些什么来评估包含数字和字母的变量中的字符,同时评估或比较他们..我想尝试:
if [ ${array[x]} -eq "A" ];然后
数组[x]=10
不过好吧……
我如何分解这样引入的值:6C3 并将每个字符分别存储在数组中,同时保持其值并能够比较它/执行操作..
感谢您的宝贵时间。
【问题讨论】:
-
我真的很想知道他们想通过这个作业教你什么...
-
@IgnacioVazquez-Abrams :这看起来像是一个真正“把头发放在胸前”的练习 ;-) 或者,O.P. 工作的行业中,基本转换的详细知识是一项关键技能?祝大家好运!
标签: arrays bash function scripting hex