Bc có hỗ trợ tính toán hex không?


20

Tôi đang cố gắng thực hiện một hexphép tính trực tiếp với bc, tôi đã chỉ định tỷ lệ.

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

Nhưng tôi vẫn nhận được một số không. Điều gì có thể sai?


Mặc dù về mặt kỹ thuật không phải là câu trả lời cho câu hỏi của bạn, bạn có thể muốn xem xét moo (1) thay vì bc (1).

Câu trả lời:


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

Lưu ý rằng chỉ các chữ số hex UPPER CASE được hỗ trợ vì các chữ số viết thường sẽ xung đột với tên hàm và tên biến, đó là lý do tại sao bạn có 0 trong ví dụ của bạn ( var1 - var2)

Nếu bạn cũng cần câu trả lời bằng hex, chỉ cần đặt obasebiến:

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

PS: FYI scalekhông được thiết kế cho cơ sở chuyển đổi. Từ man bc:

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

Vì vậy, câu trả lời thực sự về 'những gì có thể sai' là bc chỉ hỗ trợ UPPER CASE cho các chữ số hex, với các khoản tín dụng cho biên tập viên Stephane.
Roland

Lưu ý rằng điều quan trọng là phải đặt obasetrước khi bạn đặt ibase. Nếu bạn đặt ibaseđầu tiên, thì nó cũng ảnh hưởng đến giá trị được phân tích cú pháp obase. tức là ibase = 16; obase = 16;đặt obasethành 0x16 = 22
Arnavion
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.