Jak obliczyć xor szesnastkowy (^) z powłoki?


Odpowiedzi:



35

Lubię to:

echo $(( 0xA ^ 0xF ))

Lub jeśli chcesz odpowiedź w formacie szesnastkowym:

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

Na marginesie, calc(1) czy obsługuje xorjako funkcję:

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

12

gdb ma potężny kalkulator wyrażeń:

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

Funkcja powłoki:

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

$1 = 0x5

4
Zabawne, ale wygląda na to, że młot kowalski może złamać orzecha!
abligh

1
Przydatny w bardziej ogólnym przypadku oceny wyrażeń, ale nie w przypadku XOR
Peter Cordes

5

Można to zrobić w bc:

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

Lub w hex:

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

Za pomocą pliku logicznego stąd .

Po prostu rób wget http://phodd.net/gnu-bc/code/logic.bcto.


Wow, ta strona to bc(1)raj maniaka. :) Dziękuję za link.
Satō Katsura

Moja wersja „bc” nie wydaje się mieć funkcji XOR i po prostu mówi:Runtime error (func=(main), adr=51): Function xor not defined.
slacy

@slacy, czy logic.bcplik został tam wymieniony? Tak to xorsię wydaje
Eric Renouf,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.