【发布时间】:2020-01-10 17:11:14
【问题描述】:
我想编写一个程序来将十六进制数转换为十进制形式,而不使用固定长度的变量来存储结果,因为这会限制我的程序可以使用的输入范围。
假设我要使用long long int 类型的变量来计算、存储和打印结果。这样做会将我的程序可以处理的十六进制数字范围限制在8000000000000001 和7FFFFFFFFFFFFFFF 之间。超出此范围的任何内容都会导致变量溢出。
我确实编写了一个程序,该程序通过执行进位和借位操作来计算十进制结果并将其存储在动态分配的字符串中,但它运行得慢得多,即使对于像 7FFFFFFFF 这样大的数字也是如此!
然后我偶然发现了this site,它可能会采用超出 64 位变量范围的数字。我用比16^65 - 1 大得多的数字尝试了他们的转换器,但仍然无法让它溢出。它只是继续打印结果。
我认为他们必须使用更好的算法来进行十六进制到十进制的转换,这种算法不限于 64 位值。
到目前为止,Google 的搜索结果只引导我使用一些固定长度变量来存储结果的算法。
这就是我在这里的原因。我想知道这样的算法是否存在,如果存在,它是什么?
【问题讨论】:
-
查看str_hex2dec,它在字符串上完全可以做到这一点
标签: algorithm hex decimal base-conversion