シェルから16進数のXOR(^)を計算する方法は?


回答:



35

このような:

echo $(( 0xA ^ 0xF ))

または、16進数で答えが必要な場合:

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

または、16進数で:

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

ここからロジックファイルを使用します

ちょうどそれwget http://phodd.net/gnu-bc/code/logic.bcを得るために行います。


うわー、そのサイトはbc(1)オタクの天国です。:)リンクをありがとう。
桂佐藤

私のバージョンの「bc」にはXOR機能がないようで、単に次のように述べていますRuntime error (func=(main), adr=51): Function xor not defined.
。– slacy

@slacyはlogic.bcそこで参照されているファイルを取得しましたか?それが定義されxorているように見える
エリックルヌーフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.