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