如何将55打印为十六进制,并从十进制数字中回显?
#equivalent to:
printf "%x" 55
#like this:
dec=55
hex=$(([##16]dec))
echo $[0xAA]
我搜索了很多,但没有找到任何从十进制到十六进制计算的回声片段。
试试这个:
#/bin/sh
OUTPUT="echo$1|dc-e";16o?p"
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