¿Cómo calcular xor hexadecimal (^) desde Shell?

¿Cómo calcular xor hexadecimal (^) desde Shell?

Lamentablemente, bc y calc no son compatibles con xor.

Respuesta1

Como esto:

echo $(( 0xA ^ 0xF ))

O si quieres la respuesta en hexadecimal:

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

En otros comentarios,calc(1) hacesoporte xorcomo función:

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

Respuesta2

Con cualquier shell POSIX:

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

Respuesta3

gdb tiene una poderosa calculadora de expresiones:

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

Una función de shell:

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

$1 = 0x5

Respuesta4

Es posible hacer eso en bc:

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

O en hexadecimal:

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

Utilizando elarchivo lógico desde aquí.

Sólo hazlo wget http://phodd.net/gnu-bc/code/logic.bcpara conseguirlo.

información relacionada