在bash中进行十六进制转换后保持为零

时间:2017-11-22 11:04:24

标签: linux bash

我正在用bash编写一个非常简单的脚本:

for i in {000..1024} ; do 
     echo $i ; 
     echo "obase=16; $i" | bc
done

我想将至少三位数的所有数字打印为000,001,002 ..直到099.使用整数数字它可以正常工作,但在obase = 16; $ i '| bc s号后返回一位或两位数。

我如何以最简单的方式解决它?

2 个答案:

答案 0 :(得分:3)

您可能希望使用printf格式化数字,例如:

for i in {0..1024} ; do 
     echo $i
     printf '%03X\n' $i
done

j=$(printf '%03X' $i)然后echo $j

有关格式化的更多信息,请检查enter image description here格式字符串子部分。

答案 1 :(得分:1)

不确定它是“最简单的”,但通常printf适用于格式化问题。例如

printf "%03s\n" "$(echo "obase=16; $i" | bc)"