Làm thế nào để tính xor thập lục phân (^) từ shell?


Câu trả lời:



35

Như thế này:

echo $(( 0xA ^ 0xF ))

Hoặc nếu bạn muốn câu trả lời trong hex:

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

Trên một lưu ý phụ, calc(1) không hỗ trợ xornhư một chức năng:

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

12

gdb có máy tính biểu thức mạnh mẽ:

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

Một hàm shell:

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

$1 = 0x5

4
Gây cười, nhưng có vẻ như búa tạ để bẻ đai ốc!
bỏ qua

1
Hữu ích cho trường hợp đánh giá biểu thức tổng quát hơn, nhưng không dành cho XOR
Peter Cordes

5

Có thể làm điều đó trong bc:

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

Hoặc trong hex:

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

Sử dụng tệp logic từ đây .

Chỉ cần làm wget http://phodd.net/gnu-bc/code/logic.bcđể có được nó.


Wow, trang web đó là bc(1)thiên đường của geek. :) Cảm ơn vi đương link.
Satō Katsura

Phiên bản "bc" của tôi dường như không có chức năng XOR và chỉ nói:Runtime error (func=(main), adr=51): Function xor not defined.
slacy

@slacy bạn có nhận được logic.bctệp tham chiếu ở đó không? Đó là những gì định nghĩa xornó dường như
Eric Renouf
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.