如何统计不同基数中的数字位数?

For*_*Bru 6 c python algorithm base

我正在使用不同基础的数字(基数为10,基数为8,基数为16等).我正在尝试计算每个数字中的字符数.

数: ABCDEF

位数:6

我知道基于对数的方法,但我遇到了一些问题.

  1. 此Python脚本输出无法正确计算1,000,000中3,969个数字中的正确位数.

  2. 我认为使用对数的方法可能相当慢

链接:

  • 这个C程序必须非常慢(如果我有一个非常大的数字怎么办?).它也不能处理不同基数的数字(例如,base-16).

  • 不是愚弄的这个,因为在OP问只有约基10


编辑:当然我可以计算一个字符串的长度,但最让我感兴趣的是,如果可以在没有常规字符串的情况下进行计算.我想知道可以帮助实现它的算法,只知道源基转换的基数.

Edit2: source-basebase-10,转换为的base可以是任何其他base.


我们如何计算不同基数中的数字位数?

如果我知道base-10中的数字,如何在不执行转换的情况下计算转换为base-16(base-8等)的相同数字的位数?

注意:一些Python或C代码将非常感激

kra*_*nko 8

对数不应该太慢.您可以通过以下公式轻松计算任何基数的对数:logBaseN(x)=logBaseA(x)/logBaseA(N)- 您可以使用ln(基数e = 2.718 ......)或者logBase10您拥有的任何数据.所以你真的不需要一个程序,一个公式应该这样做:

num_digets(N, base) = 1 + floor(log(N) / log(base))
Run Code Online (Sandbox Code Playgroud)

N您的号码和base您想要该号码的基数在哪里.

有关更多说明,请查看此处:http: //www.mathpath.org/concepts/Num/numdigits.htm