วิธีการคำนวณเลขฐานสิบหก 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
มีประโยชน์สำหรับกรณีทั่วไปของการประเมินนิพจน์ แต่ไม่ใช่สำหรับแฮคเกอร์
Peter Cordes

5

เป็นไปได้ที่จะทำเช่นนั้นใน bc:

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

หรือเป็น hex:

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" ไม่ได้ดูเหมือนจะมีฟังก์ชั่นแฮคเกอร์และเพียงแค่พูดว่า:Runtime error (func=(main), adr=51): Function xor not defined.
slacy

@slacy คุณได้รับlogic.bcไฟล์อ้างอิงที่นั่นหรือไม่ นั่นคือสิ่งที่กำหนดxorไว้
Eric Renouf
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.