让我们说我有一个字符串5a.这是ASCII字母Z的十六进制表示.我需要知道一个Linux shell命令,它将采用十六进制字符串并输出字符串表示的二进制字节.
所以,如果我这样做
echo 5a | command_im_looking_for
Run Code Online (Sandbox Code Playgroud)
我打开Z,我会看到一封孤零零的字母Z.
我发现我偶然发现了一个奇怪的错误:
我尝试将"512"作为基数6读取,并将其输出为基数16:
echo "ibase=6;obase=16;512" | bc
161
Run Code Online (Sandbox Code Playgroud)
如您所见,输出为161,但它应该是bc(原文如此!).我尝试使用基数10:
echo "ibase=6;obase=10;512" | bc
512
Run Code Online (Sandbox Code Playgroud)
该值保持不变.好奇!默认obase是10.如果我省略它:
echo "ibase=6;512" | bc
188
Run Code Online (Sandbox Code Playgroud)
好吧,这似乎是正确的.在两步过程中,它有效:
echo "obase=16;"$(echo "ibase=6;512" | bc) | bc
BC
Run Code Online (Sandbox Code Playgroud)
所以我为不同的基础制作了一个剧本,但它让我感到困惑:
for ib in {6,8,10,16}; do echo $ib; for ob in {10,16}; do echo -en $ib $ob" \t => " ; echo "ibase=$ib;obase=$ob;333" | bc ; done; done;
6
6 10 => 333
6 16 => 108
8
8 10 => 333
8 16 => 119
10
10 10 => …Run Code Online (Sandbox Code Playgroud)