回显无符号 64 位变量



我有以下外壳代码:

Val1=0123456789abcdef
Val2=fedcba9876543210
Val3_dec=$((16#$Val1 ^ 16#$Val2))
Val3=`echo "obase=16; $Val3_dec" | bc`
echo $Val1
echo $Val2
echo $Val3_dec 
echo $Val3

具有相应的输出:

0123456789abcdef
fedcba9876543210
-1
-1

不幸的是,Val3 的输出是有符号负数,但我需要它是十六进制中的 64 位无符号输出。喜欢:

0123456789abcdef
fedcba9876543210
-1    (the output of Val3_dec does not matter)
ffffffffffffffff

一些想法?

使用 printf:

#!/bin/bash
Val1=0123456789abcdef
Val2=fedcba9876543210
Val3_dec=$((16#$Val1 ^ 16#$Val2))
Val3=`echo "obase=16; $Val3_dec" | bc`
echo $Val1
echo $Val2
printf "%dn" $Val3_dec 
printf "%xn" $Val3

结果:

$ ./test.sh 
0123456789abcdef
fedcba9876543210
-1
ffffffffffffffff

最新更新