外壳十进制到十六进制



如何将55打印为十六进制,并从十进制数字中回显?

#equivalent to:
printf "%x" 55
#like this:
dec=55
hex=$(([##16]dec))
echo $[0xAA]

我搜索了很多,但没有找到任何从十进制到十六进制计算的回声片段。

试试这个:

#/bin/sh

OUTPUT="echo$1|dc-e";16o?p&quot

echo$OUTPUT

和我有:

user@raspberrypi:~$/转换.sh 999

3E7

如何将55打印为十六进制,并从十进制数字中回显?

这是不可能的,顾名思义,echo会回声你给它的东西,它不会转换。

像这样:

是的,您可以编写一个实用程序,在shell中将十进制数转换为十六进制数。没有这样的内置转换。

将数字转换为十六进制或任何其他基数相对容易。例如Bash:

hex() {
local out="" dict=($(seq 0 9) a b c e d f)
while (($1)); do
out=${dict[$1 % 16]}$out
set -- $(($1 / 16))
done
echo $out
}
hex 55

概念上相同的代码,在sh:中

hex () {
out=""
while [ $1 -ne 0 ]; do
c=$(($1 % 16))
case $c in
10) c=a ;;   11) c=b ;;   12) c=c ;;
13) c=d ;;   14) c=e ;;   15) c=f ;;
esac
out=$c$out
set -- $(($1 / 16))
done
echo $out
}
hex 55