bc 是否支持十六进制计算?

dai*_*isy 24 bc calculator

我正在尝试hex直接使用进行计算bc,我已经指定了比例。

echo 'scale=16;c06b1000-c06a5e78' | bc
Run Code Online (Sandbox Code Playgroud)

但我仍然得到一个零。可能有什么问题?

rus*_*ush 40

echo 'ibase=16;C06D1000-C06A5E78' | bc
176520
Run Code Online (Sandbox Code Playgroud)

请注意,仅支持大写十六进制数字,因为小写字母会与函数名和变量名冲突,这就是您在示例中得到 0 ( var1 - var2)

如果您也需要十六进制的答案,只需设置obase变量:

echo 'obase=16;ibase=16;C06D1000-C06A5E78' | bc
2B188
Run Code Online (Sandbox Code Playgroud)

PS:仅供参考scale不是为转换基础而设计的。来自man bc

scale defines how some operations use digits after the decimal point.
The default value of scale is 0.
Run Code Online (Sandbox Code Playgroud)

  • 请注意,在设置 `ibase` 之前设置 `obase` 很重要。如果你先设置了 `ibase`,那么它也会影响为 `obase` 解析的值。即`ibase = 16; obase = 16;` 将 `obase` 设置为 0x16 = 22 (3认同)