我一直在使用bc
二进制到十六进制、八进制到十进制等之间的数字转换。
在下面的示例中,我尝试将 16 进制(十六进制)数字转换为二进制、八进制和十进制。
我的前两次尝试没有任何问题。
$ 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
答案1
完成后ibase=16
,进一步输入数字为十六进制,包括10obase=10
其中代表十进制值 16。因此,可以使用新的输入基数(现在为十六进制)在之前设置 obase,也可以在之后设置:
$ echo 'obase=10; ibase=16; FF' | bc
255
$ echo 'ibase=16; obase=A; FF' | bc
255