如何从shell计算十六进制xor(^)?


Answers:



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

一个shell函数:

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

$1 = 0x5

4
可笑的是,但好像是要敲碎坚果的大锤!
2013年

1
对于更通用的表达式表达式有用,但对XOR无效
Peter Cordes

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)怪胎的天堂。:) 谢谢你的链接。
聪桂

我的“ bc”版本似乎没有XOR功能,只是说:Runtime error (func=(main), adr=51): Function xor not defined.
slacy

@slacy是否在logic.bc那里引用了文件?这就是xor似乎的定义
Eric Renouf
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.