11

如何在shell中比较十六进制数和十六进制数?

4

3 回答 3

9

至少bash直接支持十六进制整数,前提是它们带有前缀0x

$ [[ 0xdead -lt 0xcafe ]] && echo yes || echo no
no
$ [[ 0xdead -gt 0xcafe ]] && echo yes || echo no
yes

您只需正常使用比较运算符...

于 2012-11-21T22:32:22.440 回答
3

您可以使用将十六进制数字转换为小数printf,然后您可以比较数值,例如:

x="0xdead"
y="0xcafe"

x_num=$(printf "%d" "$x")
y_num=$(printf "%d" "$y")

if [ $x_num -gt $y_num ]; then
    echo "x is my value"
else
   echo "x is not my value"
fi
于 2019-04-04T14:14:10.280 回答
1

怎么样

(( "$answer" == 0x42 ))
echo $?

answer=0xDEADCAFE
(( "$answer" == 0xDEADCAFE ))
echo $?
于 2012-11-21T19:46:56.607 回答