运行它printf:
$ printf "%02s" 0xf
0f
Run Code Online (Sandbox Code Playgroud)
如果你只在变量中有数字的数字,比如说$NUMBER,你可以0x直接将它与所需的前缀连接起来:
$ NUMBER=fea
$ printf "%04x" 0x$NUMBER
0fea
Run Code Online (Sandbox Code Playgroud)
跳过转换部分,bc用printf命令转换十进制数:
#num=$(... | wc -w)
num=12 # for testing
printf "%02x" $num
0c
Run Code Online (Sandbox Code Playgroud)
如果由于其他原因必须转换为十六进制,则使用0x前缀告诉printf数字已经是十六进制:
#num=$(... | wc -w | bc ...)
num=c # as obtained from bc
printf "%02x" 0x$num
0c
Run Code Online (Sandbox Code Playgroud)
该%x格式要求格式为十六进制数,%2x请求填充,以两个字符的宽度,并%02x特别要求填充带前导零,这是你想要的。有关可能的格式字符串的更多详细信息,请参阅printf手册(man printf或info coreutils printf)。