【发布时间】:2015-07-03 01:24:38
【问题描述】:
我正在处理不同基数(base-10、base-8、base-16 等)的数字。我正在尝试计算每个数字中的字符数。
例子
号码:
ABCDEF位数:6
我知道基于对数的方法,但我遇到了一些问题。
-
This Python script 输出它未能正确计算 1,000,000 中的 3,969 个数字中的位数。
-
我认为使用对数的方法可能会很慢
链接:
-
This C program 一定很慢(如果我有一个非常大的数字怎么办?)。它也不能处理不同基数的数字(例如,base-16)。
-
不是this 的骗子,因为 OP 只询问 base-10
编辑:当然我可以计算字符串的长度,但我最感兴趣的是,是否可以在没有字符串约定的情况下进行计算。我想知道只知道 source-base 和 要转换为的基础 的算法。
Edit2: source-base 是 base-10 并且 要转换为的基础 可以是任何其他基地。
我们如何计算不同基数的数字位数?
如果我知道以 10 为底的数字,我如何计算转换为以 16 为底(以 8 为底等)的同一数字中的位数而不执行转换?
注意:一些 Python 或 C 代码将不胜感激
【问题讨论】:
-
在给你一个完整的答案之前只是一个想法,如果这样的方法让你满意:找到所需的幂 n 例如 16^n > your_number > 16^n ,因为这样的数量数字应该类似于 n...
-
您是在问我们如何调试您的 Python 脚本吗?
-
@EmmanuelJay,我认为任何足够快的方法都适合。
-
@abarnert,不,我想我可以自己解决这个问题。此脚本用于测试使用对数的方法。
-
@vib,哦,是的,我忘了说
source_base是base-10,哎呀,现在正在编辑...