我有点问题。为了增加我的C语言知识,我决定尝试实现一个基本的bigint库。bigint结构的核心将是一个32位整数数组,因为它们可以适应寄存器。这样,我就可以在64位整数中进行数字操作,而且每个部分的结果都可以进行位移。我已经实现了基本的加法,并为了测试其工作情况,必须打印该数组。对于我的自我测试目的,如果我使用printf()并以十六进制输出每个数字,那么这样做是可以的。我可以很好地阅读它。
然而,大多数人无法阅读十六进制。由于该数字存储在(本质上)2 ^ 32进制中,因此打印有点棘手。有什么好方法可以转换为10进制?
编辑:
这与如何从一种进制转换到另一种进制无关,而是涉及到一种良好的实现方式。我想到了使用另一种具有转换功能的大数值来生成另一种进制的输出。
然而,大多数人无法阅读十六进制。由于该数字存储在(本质上)2 ^ 32进制中,因此打印有点棘手。有什么好方法可以转换为10进制?
编辑:
这与如何从一种进制转换到另一种进制无关,而是涉及到一种良好的实现方式。我想到了使用另一种具有转换功能的大数值来生成另一种进制的输出。
(+ 1 2 3)
或指数运算(expt 42 10000)
。十六进制常量是以#x
开头的数字。(= #x10 16)
显示真值T
,而(= #x10 10)
则显示假值NIL
。 - Gilles 'SO- stop being evil'M-x calc
)。 - Gilles 'SO- stop being evil'bc
和dc
实用程序也可以进行大数计算。 - caf