Linux 回声无符号64位变量

Linux 回声无符号64位变量,linux,bash,shell,hex,xor,Linux,Bash,Shell,Hex,Xor,我有以下shell代码: 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的输出是有符号负数,但

我有以下shell代码:

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位无符号十六进制输出。 比如:

一些想法?

使用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 "%d\n" $Val3_dec 
printf "%x\n" $Val3
结果:

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