Як обчислити шістнадцятковий xor (^) з оболонки?


Відповіді:



35

Подобається це:

echo $(( 0xA ^ 0xF ))

Або якщо ви хочете відповідь у шістнадцятковій формі:

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

З іншого боку, calc(1) чи підтримує xorфункцію:

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

12

gdb має потужний калькулятор виразів:

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

Функція оболонки:

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

$1 = 0x5

4
Забавно, але здається, що кувалда зламає горіх!
abligh

1
Корисно для більш загального випадку оцінювання виразів, але не для XOR
Пітер Кордес

5

Це можна зробити в bc:

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

Або в шістнадцятковій формі:

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

Використовуючи логічний файл звідси .

Просто зробіть, wget http://phodd.net/gnu-bc/code/logic.bcщоб це отримати.


Ого, це місце - bc(1)це небо неба. :) Дякую за посилання.
Satō Katsura

Моя версія «BC» , здається, не має функцію XOR і просто говорить:Runtime error (func=(main), adr=51): Function xor not defined.
slacy

@slacy Ви logic.bcтам посилалися на файл? Це те, що визначає, xorздається
Ерік Ренуф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.