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.