Come calcolare esadecimale xor (^) dalla shell?


Risposte:



35

Come questo:

echo $(( 0xA ^ 0xF ))

O se vuoi la risposta in esadecimale:

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

Su un lato nota, calc(1) fa supporto xorin funzione:

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

12

gdb ha un potente calcolatore di espressioni:

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

Una funzione shell:

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

$1 = 0x5

4
Divertente, ma sembra che una mazza rompa un dado!
circa il

1
Utile per il caso più generale di valutazione delle espressioni, ma non per XOR
Peter Cordes,

5

È possibile farlo in bc:

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

O in esadecimale:

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

Utilizzando il file logico da qui .

Fallo e wget http://phodd.net/gnu-bc/code/logic.bcbasta.


Wow, quel sito è il bc(1)paradiso dei geek. :) Grazie per il link.
Satō Katsura,

La mia versione di "bc" non sembra avere la funzione XOR e dice solo:Runtime error (func=(main), adr=51): Function xor not defined.
slacy

@slacy hai ricevuto il logic.bcfile di riferimento lì? Questo è ciò che definisce xorsembra
Eric Renouf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.