bc รองรับการคำนวณเลขฐานสิบหกหรือไม่


20

ฉันพยายามทำการhexคำนวณโดยตรงด้วยbcฉันได้ระบุมาตราส่วนแล้ว

echo 'scale=16;c06b1000-c06a5e78' | bc

แต่ฉันยังคงได้รับศูนย์ มีอะไรผิดปกติ?


แม้ว่าจะไม่มีคำตอบสำหรับคำถามของคุณในทางเทคนิคคุณอาจต้องพิจารณาหมู่ (1)แทนที่จะเป็น bc (1)

คำตอบ:


33
echo 'ibase=16;C06D1000-C06A5E78' | bc
176520

โปรดทราบว่ารองรับเฉพาะเลขฐานสิบหกส่วนบนเป็นตัวพิมพ์เล็กเท่านั้นที่จะขัดแย้งกับชื่อฟังก์ชันและตัวแปรซึ่งเป็นสาเหตุที่คุณได้ 0 ในตัวอย่างของคุณ ( var1 - var2)

หากคุณต้องการคำตอบเป็นเลขฐานสิบหกด้วยให้ตั้งค่าobaseตัวแปรดังนี้

echo 'obase=16;ibase=16;C06D1000-C06A5E78' | bc
2B188

PS: FYI scaleไม่ได้ออกแบบมาสำหรับฐานการแปลง จากman bc:

scale defines how some operations use digits after the decimal point.
The default value of scale is 0.

ดังนั้นคำตอบที่แท้จริงใน 'สิ่งที่ผิดพลาด' คือ bc รองรับเฉพาะกรณีบนสำหรับเลขฐานสิบหกที่มีเครดิตให้กับบรรณาธิการของสเตฟาน
Roland

หมายเหตุว่ามันเป็นสิ่งสำคัญที่จะชุดก่อนที่จะตั้งobase ibaseหากคุณตั้งค่าไว้ibaseก่อนจะส่งผลต่อค่าที่วิเคราะห์obaseด้วยเช่นกัน ie ibase = 16; obase = 16;ตั้งค่าobaseเป็น 0x16 = 22
Arnavion
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.