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


20

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

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

但是我仍然得到零。有什么事吗


从技术上讲,这并不是问题的答案,但您可能要考虑使用moo(1)而不是bc(1)。

Answers:


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

请注意,仅支持大写十六进制数字,因为小写字母将与函数和变量名称冲突,这就是为什么示例(var1 - var2)中为0的原因

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

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

PS:仅供参考,仅供参考scale。来自man bc

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

因此,关于“可能出什么问题”的真正答案是,bc仅支持十六进制数字的大写形式,并归功于编辑史蒂芬(Stephane)。
罗兰

请注意,设置obase之前很重要ibase。如果ibase先设置,那么它obase也会影响解析后的值。即ibase = 16; obase = 16;设置obase为0x16 = 22
Arnavion
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.