Wie berechnet man hexadezimales XOR (^) aus der Shell?

Wie berechnet man hexadezimales XOR (^) aus der Shell?

Leider unterstützen bc und calc kein xor.

Antwort1

So was:

echo $(( 0xA ^ 0xF ))

Oder wenn Sie die Antwort in Hex möchten:

printf '0x%X\n' $(( 0xA ^ 0xF ))

Als Randnotiz,calc(1) tutUnterstützung xorals Funktion:

$ calc
base(16)
    0xa
xor(0x22, 0x33)
    0x11

Antwort2

Mit jeder POSIX-Shell:

$ printf '%#x\n' "$((0x11 ^ 0x22))"
0x33

Antwort3

gdb verfügt über einen leistungsstarken Ausdrucksrechner:

gdb -q -ex 'print/x 0xA ^ 0xF' -ex q

Eine Shell-Funktion:

calc_gdb() { gdb -q -ex "print/x $*" -ex q;}
calc_gdb 0xA ^ 0xF

$1 = 0x5

Antwort4

Dies ist in bc möglich:

echo 'xor(10,15)' | bc -l logic.bc

Oder in Hex:

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

Verwendung derLogikdatei von hier.

Tun Sie es einfach, wget http://phodd.net/gnu-bc/code/logic.bcum es zu bekommen.

verwandte Informationen