不幸的是 bc 和 calc 不支援異或。
答案1
像這樣:
echo $(( 0xA ^ 0xF ))
或者,如果您想要十六進制答案:
printf '0x%X\n' $(( 0xA ^ 0xF ))
順便說一句,calc(1)
做支援xor
作為函數:
$ calc
base(16)
0xa
xor(0x22, 0x33)
0x11
答案2
對於任何 POSIX shell:
$ printf '%#x\n' "$((0x11 ^ 0x22))"
0x33
答案3
gdb有強大的表達式計算器:
gdb -q -ex 'print/x 0xA ^ 0xF' -ex q
一個外殼函數:
calc_gdb() { gdb -q -ex "print/x $*" -ex q;}
calc_gdb 0xA ^ 0xF
$1 = 0x5
答案4
在 bc 中可以做到這一點:
echo 'xor(10,15)' | bc -l logic.bc
或以十六進位表示:
echo 'obase=16;ibase=16; xor(AA,FF)' | bc -l logic.bc
使用邏輯文件從這裡。
只要去做wget http://phodd.net/gnu-bc/code/logic.bc
就可以得到它。