Bagaimana cara menghitung hexadecimal xor (^) dari shell?


Jawaban:



35

Seperti ini:

echo $(( 0xA ^ 0xF ))

Atau jika Anda ingin jawabannya dalam hex:

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

Sebagai catatan, calc(1) apakah mendukung xorsebagai fungsi:

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

12

gdb memiliki kalkulator ekspresi yang kuat:

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

Fungsi shell:

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

$1 = 0x5

4
Lucu, tetapi tampaknya seperti palu untuk memecahkan kacang!
Abligh

1
Berguna untuk kasus yang lebih umum dalam mengevaluasi ekspresi, tetapi tidak untuk XOR
Peter Cordes

5

Dimungkinkan untuk melakukannya di bc:

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

Atau dalam hex:

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

Menggunakan file logika dari sini .

Lakukan saja wget http://phodd.net/gnu-bc/code/logic.bcuntuk mendapatkannya.


Wow, situs itu adalah bc(1)surga para geek. :) Terima kasih atas tautannya.
Satō Katsura

Versi "bc" saya tampaknya tidak memiliki fungsi XOR dan hanya mengatakan:Runtime error (func=(main), adr=51): Function xor not defined.
slacy

@ Sll apakah Anda mendapatkan logic.bcfile yang direferensikan di sana? Itulah yang mendefinisikan xortampaknya
Eric Renouf
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.