¿Cómo calcular hexadecimal xor (^) a partir de shell?


Respuestas:



35

Me gusta esto:

echo $(( 0xA ^ 0xF ))

O si quieres la respuesta en hexadecimal:

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

En una nota al margen, calc(1) es compatible xorcomo una función:

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

12

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

44
Divertido, ¡pero parece un mazo romper una nuez!
Abligh

1
Útil para el caso más general de evaluar expresiones, pero no para XOR
Peter Cordes

5

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

Usando el archivo lógico desde aquí .

Solo hazlo wget http://phodd.net/gnu-bc/code/logic.bcpara conseguirlo.


Wow, ese sitio es el bc(1)paraíso del geek. :) Gracias por el enlace.
Satō Katsura

Mi versión de "bc" no parece tener la función XOR y solo dice:Runtime error (func=(main), adr=51): Function xor not defined.
slacy

@slacy, ¿obtuviste el logic.bcarchivo referenciado allí? Eso es lo que define xorparece
Eric Renouf
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.