高效的基数2到基数5的转换

时间:2018-02-06 21:39:34

标签: algorithm memory-efficient base-conversion

有没有办法有效地将二进制字符串或文件转换为base 5而不必将一个var中的所有位存储为数字?
例如对于base64,你可以只创建log2(64)= 6位的组。

编辑:感谢您的回答,但我再次提到这一点:该算法适用于文件。如果文件太大而无法存储在单个int变量中,那么执行通常的n % base转换就不会有任何好处。

1 个答案:

答案 0 :(得分:0)

假设您必须在内存中存储最终号码的表示,我们可以O(n * d)时间,O(d)空格,其中n是位数原始和d转换数字中的位数,通过基数5中的一系列加法,保持基数5中的当前幂2(我们最多添加其中一个)和结果。小优势是通过长乘法模式5生成下一个power-of-2-in-base-5

44(10)
101100(2)

power-of-2-in-base-5, result
1, 0
2, 0
4, 4
13, 22
31, 22
112, 134

如果它可以提供任何加速,我们可以通过表查找避免实际的乘法和加法运算,因为每个运算符mod 2只有25个组合。