Comment calculer le xor hexadécimal (^) à partir du shell?


Réponses:



35

Comme ça:

echo $(( 0xA ^ 0xF ))

Ou si vous voulez la réponse en hexadécimal:

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

Sur une note latérale, calc(1) prend en charge en xortant que fonction:

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

12

gdb a une calculatrice d'expression puissante:

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

Une fonction shell:

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

$1 = 0x5

4
Amusant, mais cela ressemble à un marteau pour casser une noix!
abligh

1
Utile pour le cas plus général de l'évaluation des expressions, mais pas pour XOR
Peter Cordes

5

Il est possible de le faire en BC:

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

Ou en hex:

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

Utilisation du fichier logique d'ici .

Il suffit wget http://phodd.net/gnu-bc/code/logic.bcde l'obtenir.


Wow, ce site est le bc(1)paradis des geek. :) Merci pour le lien.
Satō Katsura

Ma version de "bc" ne semble pas avoir la fonction XOR et dit simplement:Runtime error (func=(main), adr=51): Function xor not defined.
slacy

@slacy avez-vous logic.bcréférencé le fichier? C'est ce qui définit xorcela semble
Eric Renouf
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.