Ram*_*Ram 10 bash shell base-conversion bc
我想反转以下bash命令执行的操作:
$ echo $((62#a39qrT))
9207903953
Run Code Online (Sandbox Code Playgroud)
即将十进制9207903953转换为基数62,保持bash标准{0..9},{a..z},{A..Z}.
我知道我可以通过使用来实现这一点bc,但我必须手动转换每个字符.例如,我目前这样做:
BASE62=($(echo {0..9} {a..z} {A..Z}))
for i in $(echo "obase=62; 9207903953" | bc)
do
echo -n ${BASE62[$i]} #Doesn't work if bc's output contains leading zeroes
done
Run Code Online (Sandbox Code Playgroud)
必须有一种方法以较少"黑客"的方式做到这一点.你知道如何更有效地做到这一点吗?
编辑:更改bc输入.
Rub*_*ens 11
我真的非常感谢你提出的解决方案,而且我认为没有办法直接使用bash.这是你错过的一点:
BASE62=($(echo {0..9} {a..z} {A..Z}))
for i in $(bc <<< "obase=62; 9207903953"); do
echo -n ${BASE62[$(( 10#$i ))]}
done && echo
Run Code Online (Sandbox Code Playgroud)
输出:
a39qrT
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3643 次 |
| 最近记录: |