相关疑难解决方法(0)

linux shell脚本:十六进制字符串到字节

让我们说我有一个字符串5a.这是ASCII字母Z的十六进制表示.我需要知道一个Linux shell命令,它将采用十六进制字符串并输出字符串表示的二进制字节.

所以,如果我这样做

echo 5a | command_im_looking_for
Run Code Online (Sandbox Code Playgroud)

我打开Z,我会看到一封孤零零的字母Z.

linux bash shell scripting encoding

58
推荐指数
5
解决办法
11万
查看次数

bc及其ibase/obase选项:

我发现我偶然发现了一个奇怪的错误:

我尝试将"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)

base bc

4
推荐指数
2
解决办法
2万
查看次数

标签 统计

base ×1

bash ×1

bc ×1

encoding ×1

linux ×1

scripting ×1

shell ×1