我不想不必要地重新发明轮子,但我一直在寻找strtod的功能,但有一个基本参数(2,8,10,16)。 (我知道strtoul允许一个基本参数,但我正在寻找返回类型double)。有正确方向的建议/指示吗?感谢。
答案 0 :(得分:2)
对于任意基数,这是一个难题,但只要您的基数是2的幂,纯朴的算法就可以正常工作。
strtod
(在C99中)支持与C语言的十六进制浮点常量相同格式的十六进制浮点数。需要0x
前缀,p
分隔指数,指数位于基数10并表示2的幂。如果您需要支持C99之前的库,那么您将没有这样的运气。但是既然你也需要2/4/8的基础,那么无论如何最好自己动手。
编辑:天真算法的大纲:
double
或其他任何内容,根据您的喜好)开始,初始化为0. 如果您想要处理可能会过多的数字形式的表格,一旦超过步骤2或3中的重要位数,您必须计算出该逻辑。否则您可以忽略它。
答案 1 :(得分:0)
不太可能 - 我从未见过在其他数字基础上编码为'小数'的浮点数。