我一直在使用bc
二进制到十六进制、八进制到十进制等之间的数字转换。
在以下示例中,我尝试将 16 进制(十六进制)数字转换为二进制、八进制和十进制。
我对前 2 次尝试没有任何问题。
$ echo 'ibase=16; obase=2; FF' | bc
11111111
$ echo 'ibase=16; obase=8; FF' | bc
377
但是当我尝试将基数 16(十六进制)数字转换为基数 10(十进制)时,我得到了错误的答案。答案应该是255
$ echo 'ibase=16; obase=10; FF' | bc
FF
完成
ibase=16
后,进一步的输入数字为十六进制,包括10,obase=10
其中表示十进制值 16。因此,要么在之前设置 obase,要么在之后设置,使用新的输入基数(现在是十六进制):