【问题标题】:Converting decimal to hexadecimal in bash script在bash脚本中将十进制转换为十六进制
【发布时间】:2016-05-21 02:07:49
【问题描述】:

我想将 bash 脚本中的十进制数(循环索引号)转换为十六进制以供另一个命令使用。比如:

for ((i=1; i<=100; i++))
do

     a=convert-to-decimal($i)
     echo "$a"

done

其中 a 应该是带有四位数字和十六进制标识符的十六进制。例如,如果 i 的值为 100,则 a 的值应为 0x0064。怎么做?

【问题讨论】:

标签: linux bash hex decimal


【解决方案1】:

您可以使用printf

$ printf "0x%04x" 100
0x0064

在您的示例中,您可能会使用a="$(printf '0x%04x' $i)"

【讨论】:

  • printf -v a '0x%04x' $i,而不是进程替换。
  • @BenjaminW。您当然是指命令替换。但您的观点是正确的。
  • @gniourf_gniourf 我绝对愿意!
  • 其实 0x 可以省略。 # 标志会自动添加它。所以printf "%#06x" 100 给了0x0064。如果 OP 需要大写十六进制数字的小写,唯一的问题仍然存在。在后一种情况下,应使用X 说明符。
  • @TrueY:随时编辑答案以改进它! (或写下你自己的答案)。
【解决方案2】:

这就是你要找的东西

对于我在seq 1 100; 做 printf '%x\n' $i 完成

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2013-05-07
    • 2011-07-28
    • 1970-01-01
    • 2019-05-10
    相关资源
    最近更新 更多