Como calcular xor hexadecimal (^) do shell?


Respostas:



35

Como isso:

echo $(( 0xA ^ 0xF ))

Ou se você quiser a resposta em hexadecimal:

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

Em uma nota lateral, calc(1) faz apoio xorcomo uma função:

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

12

O gdb possui uma poderosa calculadora de expressões:

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

Uma função shell:

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

$1 = 0x5

4
Divertido, mas parece uma marreta quebrar uma noz!
abligh

11
Útil para o caso mais geral de avaliar expressões, mas não para XOR
Peter Cordes

5

É possível fazer isso em bc:

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

Ou em hexadecimal:

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

Usando o arquivo lógico daqui .

Basta fazer wget http://phodd.net/gnu-bc/code/logic.bcpara obtê-lo.


Uau, esse site é o bc(1)paraíso dos nerds. :) Obrigado pelo link.
Satō Katsura

Minha versão do "bc" não parece ter a função XOR e apenas diz:Runtime error (func=(main), adr=51): Function xor not defined.
slacy 5/10/16

@ slacy você conseguiu o logic.bcarquivo referenciado lá? Isso é o xorque parece definido
Eric Renouf 11/11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.