谁能帮我在 shell 脚本中将十六进制数转换为十进制数?
例如,我想使用 shell 脚本将十六进制数 bfca3000
转换为十进制数。我基本上想要两个十六进制数的差值。
我的代码是:
var3=`echo "ibase=16; $var1" | bc`
var4=`echo "ibase=16; $var2" | bc`
var5=$(($var4-$var3)) # [Line 48]
执行时,我得到这个错误:
Line 48: -: syntax error: operand expected (error token is "-")
最佳答案
要从十六进制转换为十进制,有很多方法可以在 shell 中或使用外部程序完成:
与 bash :
$ echo $((16#FF))
255
与bc :
$ echo "ibase=16; FF" | bc
255
与perl :
$ perl -le 'print hex("FF");'
255
与printf :
$ printf "%d\n" 0xFF
255
与python :
$ python -c 'print(int("FF", 16))'
255
与ruby :
$ ruby -e 'p "FF".to_i(16)'
255
与node.js :
$ nodejs <<< "console.log(parseInt('FF', 16))"
255
与rhino :
$ rhino<<EOF
print(parseInt('FF', 16))
EOF
...
255
与groovy :
$ groovy -e 'println Integer.parseInt("FF",16)'
255
关于bash - Shell脚本中的十六进制到十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280131/