К сожалению, bc и calc не поддерживают xor.
решение1
Так:
echo $(( 0xA ^ 0xF ))
Или, если вам нужен ответ в шестнадцатеричном формате:
printf '0x%X\n' $(( 0xA ^ 0xF ))
Кстати,calc(1)
делаетподдержка xor
как функция:
$ calc
base(16)
0xa
xor(0x22, 0x33)
0x11
решение2
С любой оболочкой POSIX:
$ 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
, чтобы получить его.