bash - Shell脚本中的十六进制到十进制

标签 bash shell hex decimal

谁能帮我在 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 中或使用外部程序完成:

:

$ echo $((16#FF))
255

:

$ echo "ibase=16; FF" | bc
255

:

$ perl -le 'print hex("FF");'
255

:

$ printf "%d\n" 0xFF
255

:

$ python -c 'print(int("FF", 16))'
255

:

$ ruby -e 'p "FF".to_i(16)'
255

:

$ nodejs <<< "console.log(parseInt('FF', 16))"
255

:

$ rhino<<EOF
print(parseInt('FF', 16))
EOF
...
255

:

$ groovy -e 'println Integer.parseInt("FF",16)'
255

关于bash - Shell脚本中的十六进制到十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13280131/

相关文章:

linux - 在 tcsh 中隐藏 stderr 和管道 stdout

自动执行ftp操作的linux脚本

linux - 使用 sh 运行 bash 脚本

linux - 获取扩展名前的文件名

bash - 在 Bash 中处理带有多个参数的命令行选项

shell - 如何在 ubuntu 中删除交换文件?

java - Java中的整数到两位十六进制

java - 在 Java 中将十六进制值字符串转换为可读字符串

c++ - double to hex string & hex string to double

linux - 进行递归搜索并创建具有匹配模式的文件列表