シェルから16進数のXOR (^)を計算するにはどうすればいいですか?

シェルから16進数のXOR (^)を計算するにはどうすればいいですか?

残念ながら、bc と calc は xor をサポートしていません。

答え1

このような:

echo $(( 0xA ^ 0xF ))

あるいは、答えを 16 進数で知りたい場合は次のようにします。

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

または16進数で:

echo 'obase=16;ibase=16; xor(AA,FF)' | bc -l logic.bc

使用方法ロジックファイルはここから

wget http://phodd.net/gnu-bc/code/logic.bc取得するためにただ実行してください。

関連情報